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