我尝试了Haystack网站http://django-haystack.readthedocs.org/en/latest/tutorial.html提供的基本教程,并且它在基本搜索中工作正常。
但是它的搜索无效,因为假设我的Note
模块有text
字段的3个条目。
当我搜索
时 python
结果: 2& 3 文字字段。
python exam
结果:第三个文字字段
但是在搜索python flask
时,它什么都没有。我想再次获得第二和第三结果,因为有python
个关键字。
搜索时boot
没有结果,但应显示第一个结果,引导字中有boot
。
再次搜索pyton
时没有结果,但它应显示第二和第三结果,因为 python 中只缺少一个char h
再次搜索bootstrap django
时没有结果,但应显示第一个和第二个结果。
所以,看起来我错过了干草堆的一些高级设置。
如何使搜索更有效,以便获得更好的结果,而不仅仅是直接匹配?
答案 0 :(得分:6)
我已回复您的各种问题作为内联回复。
但是当搜索python flask时它什么都没有。我想要第二和 第三个结果,因为有python关键字。
您想要将haystack运算符从AND
更改为OR
。有关详细信息,请参阅http://django-haystack.readthedocs.org/en/v2.1.0/settings.html#haystack-default-operator。
当搜索引导没有结果,但它应该显示第一个结果,它有 用bootstrap word启动。
查看NgramField
和EdgeNgramField
进行部分匹配。
当搜索pyton时再没有结果,但它应该显示第2和第3 结果,因为python中只缺少1个字符。
查看haystack的拼写建议:http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#spelling-suggestion
当搜索bootstrap django时再没有结果,但它应该显示1st 和第二个结果。
这是由haystack运营商配置的。
Haystack 2.0+的示例配置,默认运算符设置为OR
和INCLUDE_SPELLING=True
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
'URL': 'http://localhost:9001/solr/default',
'INCLUDE_SPELLING': True,
},
}
HAYSTACK_DEFAULT_OPERATOR = 'OR'