gpt4 book ai didi

elasticsearch - 在Elasticsearch SimpleStringQuery中要求词组匹配

转载 作者:行者123 更新时间:2023-12-03 02:14:05 25 4
gpt4 key购买 nike

我正在使用Elasticsearch 7.7和python elasticsearch_dsl软件包版本7.0.0创建一个简单的搜索引擎。我正在使用simple_query_string搜索,因为我想启用最常见的搜索功能( bool(boolean) 运算符,短语搜索),而不必自己解析查询。除词组匹配功能外,这在很大程度上运行良好。
如果查询中有一个词组匹配,我想确保所有结果都包括一个词组匹配。例如。 Google的工作原理-如果我搜索"green eggs" and ham,将没有不包含“绿色鸡蛋”的结果。
假设我的索引中有3个文档:

{
"question":"I love my phrase",
"background: "dont you"
},
{
"question":"I love my phrase",
"background: "and other terms"
},
{
"question":"I have other terms",
"background: "and more"
}
我现在看到的是:
不出所料,以下查询仅返回前两个文档,其中两个字段之一中包含“我的短语”。
    {
'simple_query_string':
{
'query': '"my phrase"',
'fields': ['question', 'background']
}
}

与我的预期相反,以下查询将返回所有3个结果,第3个得分高于第1个。
    {
'simple_query_string':
{
'query': '"my phrase" other terms',
'fields': ['question', 'background']
}
}

我该如何更改查询,以使搜索“其他词条”不会返回第3个文档,因为它不包含词组搜索,但对第2个文档的评分要高于第1个文档,因为它包含第三个文档之外的其他搜索词词组?
我尝试过的东西没有用:
  • 'query': '"my phrase" AND (other terms)'
  • 'query': '"my phrase" AND other terms'

  • 谢谢

    最佳答案

    Contrary to what I expect, the below query will return all 3 results


    默认情况下,查询中的单词与 OR运算符结合使用:请参见 default_operator documentation中有关 simple_query_string参数的说明。您的第二个查询被解释为 "my phrase" OR other OR terms,因此它将返回所有3个结果:每个文档至少包含术语 "my phrase"otherterms之一。

    How can I alter my query so that searching for '"my phrase" other terms' will not return the 3rd document because it does not contain the phrase search, but score the 2nd document higher than the 1st because it contains additional search terms outside of the phrase?


    AFAIK,这是 simple_query_string搜索无法实现的。您可以尝试使用 query_string搜索,该搜索具有名为 boolean operators的功能。使用该功能,您可以编写查询以提供所需的结果:
    {
    "query": {
    "query_string": {
    "query": "+\"my phrase\" other terms",
    "fields": ["question", "background"]
    }
    }
    }

    关于elasticsearch - 在Elasticsearch SimpleStringQuery中要求词组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63963115/

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