我有一个带有elasticsearch的搜索索引作为后端:
class MySearchIndex(indexes.SearchIndex, indexes.Indexable):
...
name = indexes.CharField(model_attr='name')
name_auto = indexes.NgramField(model_attr='name')
...
假设我在elasticsearch中有以下值:
Cable
Magnet
Network
Internet
Switch
当我执行搜索' netw '它返回磁铁& 互联网以及网络。使用其他一些测试用例我认为haystack也在搜索子字符串,比如 netw 中的 net ,如上例所示。
以下是代码:
sqs = sqs.filter(category='cat_name').using(using)
querried = sqs.autocomplete(name_auto=q)
还试过:
querried = sqs.autocomplete(name_auto__contains=q)
如何解决此问题并使其仅返回包含精确搜索字词的结果?
使用django-haystack == 2.4.1 Django == 1.9.1 elasticsearch == 1.9.0