pip install django-haystack pip install whoosh pip install jieba
1:将Haystack添加到settings.py中的INSTALLED_APPS中:
INSTALLED_APPS = [
.......
.......
'HAYSTACK',
'YOUR APP1',
'YOUR APP2'
]
2:在你的settings.py中添加一个设置来指示站点配置文件正在使用的后端,以及其他的后端设置。
HAYSTACK——CONNECTIONS是必需的设置,并且应该至少是以下的一种:
solr
HAYSTACK_CONNECTIONS = {
'default': { 'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 'URL': 'http://127.0.0.1:8983/solr' # ...or for multicore... # 'URL': 'http://127.0.0.1:8983/solr/mysite',
},
}
ElasticSearch:
HAYSTACK_CONNECTIONS = {
"default": {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://127.0.0.1:9200/',
'INDEX_NAME': 'haystack',
}
}
Whoosh:
HAYSTACK_CONNECTIONS = {
"default": {
'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine',
'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index')
}
}
# 自动更新索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor
whosh是纯python编写的
用jaba分词替换haystack的默认分词
在安装目录(seit-packages) 下找到 haystack
cd haystack/backends
新健一个文件 ChineseAnalyzer.py
import jieba
from whoosh.analysis import Tokenizer, Token
class ChineseTokenizer(Tokenizer):
def __call__(self, value, positions=False, chars=False, keeporiginal=False, removestops=True, mode='', **kwargs):
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
if positions:
t.pos = start_pos + value.find(w)
if chars:
t.startchar = start_char + value.find(w)
t.endchar = start_char + value.find(w) + len(w)
yield t
def ChinesAnalyzer():
return ChineseTokenizer()
cp whoosh_backend.py whoosh_cb_backend.py 复制一份 whoosh_backend.py
打开 whoosh_cb_backend.py
写入 from .ChineseAnalyzer import ChineseAnalyzer
更改词语分类
查找 TEXT(STORED=True, analyzer=StemmingAnalyzer(), ...)
修改为 TEXT(STORED=True, analyzer=ChineseAnalyzer(), ...)
settings 配制修改
HAYSTACK_CONNECTIONS = {
"default": {
'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',
'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index')
}
}
重新生成索引
python manage.py rebuild_index
浙公网安备 33010602011771号