【发布时间】:2017-12-12 17:14:33
【问题描述】:
我正在尝试根据关键字搜索产品。我的haystack索引如下:
class ProductIndex(indexes.SearchIndex, indexes.Indexable):
name= indexes.CharField(model_attr='name')
text = indexes.CharField(document=True) # contains keywords associated with the product
在这种情况下,“文本”字段包含一组与产品相关的关键字。例如,这是一个示例产品索引:
name: "Tide Detergent"
text: "laundry household shopping cleaning supplies"
当我搜索laundry 时,Tide Detergent 会出现在搜索中,但其他不相关的结果也会出现,例如text 中包含lawn 或laugh 的产品。所以看起来elasticsearch 不仅在搜索laundry,还在搜索这个词的变体。
这是我的搜索查询的样子:
qs = SearchQuerySet().models(Product).filter(content__exact='laundry')
我的问题是:如何强制 haystack 或 elasticsearch 严格搜索我的输入关键字并忽略它们的变体?换句话说,如何确保 haystack 只搜索 laundry 而排除任何其他术语?
【问题讨论】:
-
似乎 django haystack 适用于简单的用例,并且 API 很差,无法通过搜索进行任何智能操作。我很期待 django-elasticsearch-dsl github.com/sabricot/django-elasticsearch-dsl
标签: django elasticsearch indexing full-text-search django-haystack