0
我有elasticsearch搜索索引作为后端:Django的草堆(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',它返回磁铁 & 互联网也随之网络。使用其他一些测试用例,我认为干草堆也在搜索子字符串,如net in netw正如您在上例中看到的那样。
下面是代码:
querried = sqs.autocomplete(name_auto__contains=q)
我怎样才能解决这个并使其工作只返回包含精确的搜索词的结果:
sqs = sqs.filter(category='cat_name').using(using)
querried = sqs.autocomplete(name_auto=q)
与也试过?
使用Django,草垛== 2.4.1 Django的== 1.9.1 elasticsearch == 1.9.0