不多有朋友寫相關haystack與whoosh的文章,更沒有一個較好的示例。因此我把這個完整的示例開源了,但願有興趣的同窗可以交流。示例網站 python
同時注意: mysql
若是使用結巴分詞默認的ChineseAnanlyzer,請修改代碼以下會更好: git
def ChineseAnalyzer(stoplist=STOP_WORDS,minsize=1,stemfn=stem,cachesize=50000): return ChineseTokenizer()|LowercaseFilter()|StopFilter(stoplist=stoplist,minsize=minsize)\ |StemFilter(stemfn=stemfn, ignore=None,cachesize=cachesize)使用 yaha分詞請小小的修正如下代碼:
#analyzer.py _cuttor = Cuttor() _cuttor.set_stage1_regex(re.compile('(\d+)|([a-zA-Z]+)', re.I|re.U)) #註釋這裏,把名字發現去掉。 #_cuttor.add_stage(SurnameCutting()) #_cuttor.add_stage(SuffixCutting()) class ChineseTokenizer(Tokenizer):
就是把名字發現功能與地名給去掉了,省得搜索劉德的時候沒法獲得劉德華的結果。固然後續優化speling功能以後,可能有更好的解決辦法。 github
建議別開啓spelling功能,由於這樣搜索速度會降低10+倍。原來多是whoosh自己的spelling模塊實現得很差。這個功能後續會想辦法補上。 sql
有一些功能haystack很差實現,便直接修改whoosh_cn_backend.py,從實現角度來講不大好,但他原本只是學習示例嘛,將就。 數據庫
目前沒開放爬蟲代碼,不少數據都從豆瓣爬過來。若是你們想要數據庫數據,能夠在下面留言。 app
開源地址 如下是代碼的readme: 學習
A movie search using haystack and whoosh. 一個使用haystack 與whoosh的電影搜索站。使用whoosh的人不多,我用着用着就愈來愈喜歡。 網上雖然有不少對whoosh的測試,若是要看運行效果或看如何去使用whoosh,能夠參考這個網站的源代碼:http://www.v-find.com 這個網站僅限於本身與幾個朋友使用,因此可能沒多久就關了:) 測試
把whoosh_cn_backend.py放入到搜索項目 haystack/backend/ 文件夾下 對這個項目有興趣可到個人博客:http://www.oschina.net/ 交流 優化