基於djang-haystack,咱們可以自由切換搜尋引擎了。
whoosh 的使用跟solr 基本一樣 ,模板使用什麼的都是一樣的,主要是對whoosh 進行一些修改,讓其支援中文。
settings.py 的配置
haystack_connections =,}
這裡邊使用主要參考 這篇文章,他給出了實際操作方法,很感謝啊。
建立中文分析chineseanalyzer.py,儲存到haystack的安裝資料夾\lib\site-packages\haystack\backends裡面。內容如下:
importjieba
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 命令列輸入 ...