gpt4 book ai didi

elasticsearch - Elasticsearch:使用特殊字符打开和关闭括号进行搜索

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

嗨,我正在尝试通过 flex 搜索来搜索其中包含这些字符'(',')'的单词。我无法获得预期的结果。

这是我正在使用的查询

{
"query": {
"query_string" : {
"default_field" : "name",
"query" : "\\(Pas\\)ta\""
}
}}

在结果中,我首先获得的记录包括“PASTORS”,“PAST”,“PASCAL”,“PASSION”。 我想在搜索结果的第一条记录中获得名称“Pizza&(Pas)ta”,因为它与最匹配。

这是模式中名称字段的分析器
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "20"
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}

"name": {
"analyzer": "autocomplete",
"search_analyzer": "standard",
"type": "string"
},

请帮我解决这个问题,谢谢

最佳答案

您已经使用了standard标记生成器,该标记器将从生成的 token 中删除()。除了获得 token (pas)ta之外,生成的 token 之一是pasta,因此您无法获得(pas)ta的匹配项。

除了使用standard标记生成器外,您还可以使用whitespace标记生成器,它将保留名称中的所有特殊字符。将分析仪定义更改为以下内容:

  "analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}

关于elasticsearch - Elasticsearch:使用特殊字符打开和关闭括号进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57321426/

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