gpt4 book ai didi

ElasticSearch nGram 过滤掉标点符号

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

在我的 ElasticSearch 数据集中,我们有以句点分隔的唯一 ID。样本编号可能类似于 c.123.5432

使用 nGram 我希望能够搜索:c.123.54

这不会返回任何结果。我相信标记器正在 split 。为了解决这个问题,我在 token_chars 中添加了“标点符号”,但结果没有变化。我的分析器/标记器在下面。

我也尝试过:“token_chars”:[] <--根据文档,这应该保留所有字符。

"settings" : {
"index" : {
"analysis" : {
"analyzer" : {
"my_ngram_analyzer" : {
"tokenizer" : "my_ngram_tokenizer"
}
},
"tokenizer" : {
"my_ngram_tokenizer" : {
"type" : "nGram",
"min_gram" : "1",
"max_gram" : "10",
"token_chars": [ "letter", "digit", "whitespace", "punctuation", "symbol" ]
}
}
}
}
},

编辑(更多信息):
这是相关字段的映射:
"ProjectID":{"type":"string","store":"yes", "copy_to" : "meta_data"},

这是我将其复制到的字段(也有 ngram 分析器):
"meta_data" : { "type" : "string", "store":"yes", "index_analyzer": "my_ngram_analyzer"}

这是我用来查看我的搜索是否有效的命令(看到它正在搜索“meta_data”字段):
GET /_search?pretty=true
{
"query": {
"match": {
"meta_data": "c.123.54"
}
}
}

最佳答案

来自 https://github.com/elasticsearch/elasticsearch/issues/5120 的 s1monw 的解决方案

通过使用 index_analyzer 搜索仅使用标准分析器。为了修复它,我将 index_analyzer 修改为分析器。请记住,结果的数量会大大增加,因此可能需要将 min_gram 更改为更高的数量。

关于ElasticSearch nGram 过滤掉标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764781/

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