Django-Haystack(elasticsearch)自动完成为搜索词

时间:2016-09-21 14:53:15

标签: python django elasticsearch django-haystack

我有一个带有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

1 个答案:

答案 0 :(得分:0)

使用django-hesab

自定义弹性搜索后端设置

django-hesab的默认设置将返回确切的搜索结果。