【问题标题】:Django-Haystack(elasticsearch) Autocomplete giving results for substring in search termDjango-Haystack(elasticsearch)自动完成为搜索项中的子字符串提供结果
【发布时间】: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 时,它返回了MagnetInternet 以及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


    【解决方案1】:

    使用 django-hesab 自定义您的 elasticsearch 后端设置

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

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      • 2011-12-26
      相关资源
      最近更新 更多