django全文搜尋學習心得(三)whoosh 篇

2022-08-28 13:12:13 字數 1864 閱讀 3851

基於djang-haystack,咱們可以自由切換搜尋引擎了。

whoosh 的使用跟solr 基本一樣 ,模板使用什麼的都是一樣的,主要是對whoosh 進行一些修改,讓其支援中文。

settings.py 的配置

haystack_connections =,

}

這裡邊使用主要參考 這篇文章,他給出了實際操作方法,很感謝啊。

建立中文分析chineseanalyzer.py,儲存到haystack的安裝資料夾\lib\site-packages\haystack\backends裡面。內容如下:

import

jieba

from whoosh.analysis import

regexanalyzer

from whoosh.analysis import

tokenizer,token

class

chinesetokenizer(tokenizer):

def__call__(self, value, positions=false, chars=false,

keeporiginal=false, removestops=true,

start_pos=0, start_char=0, mode='', **kwargs):

#assert isinstance(value, text_type), "%r is not unicode" % value

t = token(positions, chars, removestops=removestops, mode=mode,

**kwargs)

seglist=jieba.cut(value,cut_all=true)

for w in

seglist:

t.original = t.text =w

t.boost = 1.0

ifpositions:

t.pos=start_pos+value.find(w)

ifchars:

t.startchar=start_char+value.find(w)

t.endchar=start_char+value.find(w)+len(w)

yield

tdef

chineseanalyzer():

return chinesetokenizer()

然後將\lib\site-packages\haystack\backends裡面的whoosh_backend.py複製為whoosh_cn_backend.py,

開啟whoosh_cn_backend.py進行修改。如下:

#

在whoosh_cn_backend.py裡面

.........

from chineseanalyzer import

chineseanalyzer

.............

#然後找到build_schema函式處,這是乙個構建分詞模式的#找到

schema_fields[field_class.index_fieldname] = text(stored=true, analyzer=stemminganalyzer(), field_boost=field_class.boost)

將analyzer = stemminganalyzer() 更改為 analyzer = chineseanalyzer()

這樣就算完工了。

執行

python manage.py rebuild_index  建立索引

python manage.py runserver 執行

開啟瀏覽器  搜尋試試。

django全文搜尋學習心得(四)sphinx篇

很遺憾,haystack sphinx 沒有文件可以檢視,菜鳥們都安息了。還好有django sphinx 這玩意挺好!安裝 django sphinx 這個現在已經是非常穩定的了,所以github上邊也不會再有任何新的發行版了,穩定才是最好的保障。所以直接pip install django sp...

搜尋學習心得

在學習了眾多搜尋的方式後,不由感慨。啊,太巨了!今天huayucaiji我就給大家講一講c 搜尋的心得吧!深度優先搜尋 廣度優先搜尋 迭代加深搜尋 乙個乙個講吧!深度優先搜尋 下簡稱 深搜 簡稱dfs。是簡潔明瞭的搜尋方式,以遞迴的方式實現。比較簡單 好,廢話不多說,讓我們看一道題全排列問題 原題見...

Django的學習心得

初次接觸django模板,好多地方比較模糊,按著django官網給的學習6步驟,一步一步搞懂django,首先,咱們在命令列打下python c import django print django.get version 獲取django的版本號,此時django的版本號為1.8.2 命令列輸入 ...