gpt4 book ai didi

elasticsearch - 在 Elasticsearch 中使用query_string忽略 'AND'和 'OR'构造,并按字面意义进行搜索

转载 作者:行者123 更新时间:2023-12-02 23:07:12 24 4
gpt4 key购买 nike

在elasticsearch中,可以执行以下查询:

GET /_search
{
"query": {
"query_string": {
"query": "(apple) OR (banana)",
}
}
}
这将导致所有文档的任何字段都具有值“apple”或“banana”。我正在寻找一种方法来防止用户在搜索框中编写诸如“(苹果)或(香蕉)”之类的查询。 ,应将其转换为“(apple)OR(banana)”的文字搜索(因此,返回值设置为“(apple)或(banana)”的任何文档)。最好的方法是什么?
给出更多的上下文:选择“query_string”以便能够使用通配符对整个文档执行“包含”查询。
先感谢您!
[编辑] 要更清楚一点:
例:
  • 文件1:{“小吃”:“苹果”}
  • 文件2:{“小吃”:“香蕉”}
  • 文件3:{“snack”:“(苹果)或(香蕉)”}

  • 如果用户搜索 “(苹果)或(香蕉)” ,通常会生成Doc 1和Doc 2,但我希望它仅与Doc 3匹配。
    通过@Bhavya和@TreffnonX解决了:
    简介:采用@Bhavya解决方案,但将搜索字符串用额外的双引号引起来:
        GET _search
    {
    "query": {
    "query_string": {
    "query": "\"\\(apple\\) OR \\(banana\\)\""
    }
    }
    }
    要么
     GET _search
    {
    "query": {
    "query_string": {
    "query": "\"(apple) OR (banana)\""
    }
    }
    }

    最佳答案

    添加带有索引数据,搜索查询和搜索结果的工作示例
    索引数据:

    { "snack": "apple" }

    {"snack": "banana"}

    {"snack": "(apple) OR (banana)"}
    搜索查询:
    {
    "query": {
    "query_string": {
    "query": "\\(apple\\) OR \\(banana\\)"
    }
    }
    }
    搜索结果:
    "hits": [
    {
    "_index": "stof_64352271",
    "_type": "_doc",
    "_id": "1",
    "_score": 4.0350027,
    "_source": {
    "snack": "(apple) OR (banana)"
    }
    }
    ]

    关于elasticsearch - 在 Elasticsearch 中使用query_string忽略 'AND'和 'OR'构造,并按字面意义进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64352271/

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