【发布时间】:2016-09-21 14:53:15
【问题描述】:
我有一个以 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 时,它返回了Magnet 和Internet 以及Network。使用其他一些测试用例,我认为 haystack 也在搜索子字符串,例如 netw 中的 net,如您在上面的示例中所见。
代码如下:
sqs = sqs.filter(category='cat_name').using(using)
queried = sqs.autocomplete(name_auto=q)
也尝试过:
queried = sqs.autocomplete(name_auto__contains=q)
我怎样才能解决这个问题并让它只返回那些包含精确搜索词的结果?
使用 django-haystack==2.4.1 Django==1.9.1 elasticsearch==1.9.0
【问题讨论】:
标签: python django elasticsearch django-haystack