原创 算法導論--堆排序

堆排序涉及到一個數據結構就是“堆”,所以我們先從“堆”開始講起。 一、堆 堆的存儲方式其實就是一個數組,而堆的邏輯結構是一個完全二叉樹(什麼是完全二叉樹請自行百度)。 如圖(a)是一個完全二叉樹,樹的父節點都比孩子節點要大,這個

原创 ElasticSearch--相關度背後的理論

TF/IDF 詞頻(TF) 其實就是一個詞在一篇文章中出現的頻率在開平方,頻率越高,說明這個詞在這篇文章中的權重越高 IDF idf(word) = 1+log(numDocs/(docFreq +1)) numdocs是所有文

原创 ElasticSearch--Term-Based VS Full-Text

所有的訪問執行關聯度計算,但並不是所有訪問都有一個分析階段。除了一些特定查詢例如Bool或者是function_score查詢,這些不再文本上執行。文本訪問可以被分成兩個部分: Term-based queries Queries

原创 ElasticSearch--實體搜索

現在學習到了實體搜索,加入我們想搜索例如Person、product這樣的實體,在這種情況下,一些關鍵的信息其實分佈在數據的多個屬性裏的。比如person的數據存儲 { "firstname": "Peter",

原创 ElasticSearch--Lucene是怎麼計算相關度的

話不多說,直接上公式 公式說明: score(q,d)是文檔 d 和查詢 q 之間的相關度 queryNorm(q)是查詢正則化因子 % coord(q,d)是coordination factor % 對在查詢字符串q中

原创 ElasticSearch--停用詞的使用

使用停用詞的利弊 我們擁有更多硬盤資源,但是比較少的內存資源。從索引中去掉一些停用詞平均每百萬個文檔中也就節省了4MB的資源。所以停用詞並不是來節省存儲資源的。 並且,我們移除一些停用詞會帶來一些壞處。比如我們就很難無法做

原创 ElasticSearch--以屬性爲中心的查詢

在實體查詢中,我感興趣是最匹配的項,而不是說最匹配的屬性,這個在Most_fileds 或者best_fields都是以屬性爲中心的查詢。 問題1:在多個屬性中匹配同樣的單詞 考慮most_fields查詢是怎麼執行的:Elas

原创 ElasticSearch--聯合過濾器查詢

Combining Filters 之前的兩個例子都是單個字段的查詢。在生成環境中,你會需要多個值一起查詢的,例如在sql語言中 SELECT product FROM products WHERE (price =

原创 golang開源項目列表

https://github.com/gin-gonic/gin 一個好用web框架 https://github.com/golang/groupcache 原memcache作者寫的分佈式緩存系統,源碼值得學習

原创 終端命令積累

ps -fu coyte|grep java|awk ‘{print $2}’|xargs kill -9 刪除coyte用戶下所有的java程序。這裏最關鍵的是awk命令,其中左邊的命令的輸出都是右邊命令的輸入。 scp localf

原创 golang--net/rpc

用這個這個包,我們可以通過網絡或者其他I/O的連接來訪問其他機器上的方法。一個服務器可以註冊一個對象,然後其他機器就可以用對象的類型名來遠程調用這個對象的方法。 當然這些可以被遠程調用的方法需要一些限制: -the method’s t

原创 Goroutine的調度分析(一)

  golang這個新興的語言,最關鍵的就在於goroutine,而goroutine的調度又是golang的核心。可以說,沒有goroutine,那麼這個語言就會毫無意義,沒有發明的必要。爲了能夠更好的寫出高質量的代碼,最近學習了gor

原创 Gradiant Boosting Machine

  最近看了Friedman的關於梯度提升算法的論文,記錄一下。 1 函數估計   在機器學習領域,算法就是利用數據去估計一個函數或就是一個“預測學習”問題。用訓練數據得到一個估計的F*(x),這個函數將x映射到y,然後我們通過最小化

原创 算法導論--在平均線性時間下選擇元素

一般的選擇問題比簡單的選擇最小值要難的多。但是,隨着n的增大,它們所消耗的時間都是O(n)。這一次我們介紹一個基於分治法的算法來解決這個問題,叫做隨機選擇算法,英文名叫,RANDOMIZED-SELECT。這個算法跟快速排序很像,只不過它

原创 算法導論--二叉樹

搜索樹這個數據結果支持很多動態的操作:搜索、最小值啦、最大值,插入和刪除,當然也可以作爲詞典以及優先級隊列。 啥是二叉搜索樹 上圖便是二叉搜索樹,一個父節點最大分兩個叉,並且左孩子子樹的所有節點小於等於父節點,右孩子子樹的所有節點大於