gpt4 book ai didi

elasticsearch - 如何处理 ElasticSearch 字段中的标点符号

转载 作者:行者123 更新时间:2023-11-29 02:52:47 25 4
gpt4 key购买 nike

我在 Elastic Search 中存储的文档中有一个字段,我想将其作为全文字段进行分析。在一种情况下,它包含 name 字段的值,如下所示:

A&B Corp

我希望能够使用这样的查询在文档中搜索自动完成小部件(假设用户在自动完成字段中键入了 A&B)。目的是匹配包含带有类型前缀的任何术语的文档。

{   "query": {
"filtered": {
"query": {
"query_string": {
"query": "A&B*",
"fields": [
"firstName",
"lastName",
"name",
"key",
"email"
]
}
},
"filter": {
"terms": {
"environmentId": [
"foo"
]
}
}
}
}
}

```

我对名称字段的映射如下所示:

"name": {
"type": "string"
},

但是,我没有得到任何结果。查询结构适用于字段中没有 & 的文档,所以我很确定这是问题的一部分。

但是,我不确定如何处理这个问题。我很确定我仍然想分析该字段以进行全文搜索。

此外,如果我在查询中的 * 之前添加一个空格(即 "query": "A&B *",),那么我得到的结果包括 A&B,所以我不认为它只是丢弃和号并将 AB 视为单独的术语.

我应该更改映射吗?查询?

最佳答案

Query_string 查询有一组需要转义的保留字符。

query_string : Read the reserved characters section

所以要搜索

'A&B' (or) 'A&B Corp' (or) 'A&B....'

Your query must be "A&B\\*" such that the query_string parser treats it as a * wildcard operator.

  1. 当前您的查询正在搜索完全匹配的“A&B*”它希望 asterik 成为您数据的一部分。

  2. 当您搜索 "A&B *" 时,空格是保留的性格所以它 现在搜索“A&B”(或)“*”,因此您在此得到匹配 案例。

关于elasticsearch - 如何处理 ElasticSearch 字段中的标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32855871/

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