gpt4 book ai didi

elasticsearch - 短语中的 Elasticsearch 通配符

转载 作者:行者123 更新时间:2023-12-03 02:37:18 28 4
gpt4 key购买 nike

目前我们有一个搜索可以进行字面全词搜索。例如在文档中

Hello World
世界你好
你好美丽的世界
世界向你问好

q="Hell" returns nothing
q="Hello" returns all 4
q="Hello w" returns nothing
q="hello world" returns the first 2

我们现在需要进行通配符匹配。我们可以使用 * 来实现这一点,并从查询中删除引号。但是,删除引号也会使查找不再是短语查找。例如
q=Hell* returns all 4 (not a problem)
q=Hello w* returns all 4 (problem; we wanted only the first two)

有没有人知道一种方法可以防止将“hello”和“w*”拆分为 2 个单独的搜索?

最佳答案

更改 q 键入关键字是一种解决方案,然后创建一个小写规范器。

{
"mappings": {
"doc": {
"properties": {
"q": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "my_custom_normalizer"
}
},
"fielddata": true
}
}
}
},
"settings": {
"analysis": {
"normalizer": {
"my_custom_normalizer": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
}
}

搜索查询:
GET index/_search
{
"query": {
"wildcard": {
"q.keyword": {
"value": "hello w*"
}
}
}
}

关于elasticsearch - 短语中的 Elasticsearch 通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58628236/

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