gpt4 book ai didi

elasticsearch - 合并 hunspell 过滤器后在 elasticSearch 中完全匹配

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

我们已将 hunspell 过滤器添加到 Elasticsearch 实例中。没有什么花哨...

{
"index" : {
"analysis" : {
"tokenizer" : {
"comma" : {
"type" : "pattern",
"pattern" : ","
}
},
"filter": {
"en_GB": {
"type": "hunspell",
"language": "en_GB"
}
},
"analyzer" : {
"comma" : {
"type" : "custom",
"tokenizer" : "comma"
},
"en_GB": {
"filter": [
"lowercase",
"en_GB"
],
"tokenizer": "standard"
}
}
}
}
}

现在,尽管我们似乎失去了使用引号进行精确匹配查询的内置工具。例如,搜索“lace”也会对“lace”进行等分搜索。我知道这是包含 hunspell 的一点,但我希望能够通过使用引号来强制完全匹配

顺便说一句,我正在为此做 bool 查询。沿着(在java中)
"bool" : {
"must" : {
"query_string" : {
"query" : "\"lace\"",
"fields" :
...

或( postman 直接到 9200 ...
{
"query" : {
"query_string" : {
"query" : "\"lace\"",
"fields" :
....

这可能吗 ?我猜这可能是我们会在 tokaniser 中做的事情,但我不太确定从哪里开始......?

最佳答案

您将无法处理此标记器级别,但您可以在映射级别调整配置以使用 multi-fields ,您可以保留不会分析的同一字段的副本,然后在查询中使用它来支持您的用例。

您可以更新您的映射如下

"mappings": {
"desc": {
"properties": {
"labels": {
"type": "string",
"analyzer": "en_GB",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}

进一步修改您的查询以搜索原始字段而不是分析字段。
{
"query": {
"bool": {
"must": [{
"query_string": {
"default_field": "labels.raw",
"query": "lace"
}
}]
}
}
}

希望这可以帮助
谢谢

关于elasticsearch - 合并 hunspell 过滤器后在 elasticSearch 中完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42027188/

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