用MySQL全文索引給FeedDB打造一個搜索引擎 - 雜項其他 - python.cn(news, jobs)
用MySQL全文索引給FeedDB打造一個搜索引擎
效果圖,歡迎測試? http://feed.readself.com/
?
samhjn ? ?同學在上一篇文章評論中表示? Feed Database ?的搜索功能不好使。原因是之前我沒有太注重搜索上的優化,所以這個功能的體驗很差。例如輸入 “xiaoxia” 結果搜出一大堆 “xiaoxiao” 的網站,排名還比我的博客靠前,挺失望的!不過,今天的工作就是把這個功能給完善了!現在已經不是之前那個單純在MySQL里使用like '%keyword%'查找那么簡陋了。而且搜索速度也大大提升,不再像之前那樣慢。
只要你輸入關鍵字“xiaoxia”進行搜索,絕對不會出現“xiaoxiao”的結果了,因為這是兩個不同的名字。
?
同時,你輸入的關鍵詞還會被拆分,例如“吸血鬼小說”會被拆分成“吸血鬼”和“小說”。排序方式為先按匹配詞數,再按BR值(被友情鏈接數量)排序。
?
提到搜索引擎技術就離不開分詞和索引,在分詞上,我使用的是? mmseg ?的中文分算法和搜狗的詞庫,分詞速度快的驚人。以至于我處理數據的瓶頸在MySQL數據庫上。我使用了MySQL的fulltext索引功能,在檢索效率上可能沒有sphinx那么快,但是對于10萬個條目以內的數據庫,速度已經足夠了。為了達到精確查找的目的,我只對網站鏈接和標題兩個屬性進行了索引,fulltext的索引數據占用的空間也不多,才不到10M,挺環保的。
對網站標題進行分詞之后,連同需要建立索引的鏈接,一起搬到了一個叫feed_index的索引表中。
下面是未分詞的一段數據:
分詞之后的數據:
目前這個分詞效果還是挺滿意的。另外,在最近看的一本搜索引擎相關的書籍中,提到了一種不依賴于詞庫的分詞方法,能夠應付一些新生的詞匯,有空研究一下。如果兩種方法都結合起來,應該能夠達到更好的效果?
![]()
夜已深,明天繼續研究!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
