gpt4 book ai didi

django - 如何从django-haystack和Elasticsearch中排除无关的搜索结果?

转载 作者:行者123 更新时间:2023-12-03 00:05:59 24 4
gpt4 key购买 nike

我正在尝试根据关键字搜索产品。我的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出现在搜索结果中,但其他不相关的结果也是如此,例如 lawn中具有 laughtext的产品。因此,似乎 elasticsearch不仅在搜索 laundry,还在搜索单词的变体。

这是我的搜索查询的样子:
qs = SearchQuerySet().models(Product).filter(content__exact='laundry')

我的问题是:如何强制 haystackelasticsearch严格搜索我的输入关键字,而忽略它们的变体?换句话说,如何确保干草堆仅搜索 laundry并排除任何其他术语?

最佳答案

我找到了答案。我使用了原始的elasticsearch查询,而不是直接通过haystack进行查询。在该查询中,我使用了constant_score查询,该查询将搜索确切的术语,而不是模糊的术语。

{
"query":{
"query":{
"constant_score":{
"filter":{
"bool":{
"must":[
{"bool":{
"must":[
{
"term": {
"text":"laundry"
}
}
]
}
}
]
}
}
}
}
}
}

以下是有关 constant_score查询的更多信息: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-constant-score-query.html

关于django - 如何从django-haystack和Elasticsearch中排除无关的搜索结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44987150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com