gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中选择合适的分析器

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

我有一个要求,我需要在以下位置执行搜索。

1]不区分大小写的匹配
2]特殊字符匹配

3]部分比赛

我正在使用“ngram过滤器”,如下所示,它可以满足上述所有需求
但是,我将为一个非常庞大的数据建立索引,该数据将包含“注释”,“描述”等字段,长度可能长达150个字。
从网络引用中,我认为使用“ngram”过滤器会导致大量磁盘空间使用。
有没有其他选择可以满足上述要求

{
"template": "*",
"settings": {
"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 25
}
},
"analyzer": {
"case_insensitive": {
"tokenizer": "whitespace",
"filter": [
"ngram_filter",
"lowercase"
]
},
"search_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": "lowercase"
}
}
}
},
"mappings": {
"incidents": {
"dynamic_templates": [
{
"strings": {
"match_mapping_type": "string",
"mapping": {
"type": "string",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
},
"analyzer": "case_insensitive",
"search_analyzer": "search_analyzer"
}
}
}
]
}
}
}

谢谢 !

最佳答案

我想搜索性能也很关键,在这种情况下,您必须使用ngrams。但是您可以尝试减小最小ngram大小。例如,如果可以跳过一个或两个字母的匹配,可以将min_gram设置为3或更大。它将稍微减少磁盘使用量。

也可以使用wildcardquery_string查询进行部分匹配。第一个区分大小写,第二个则不区分大小写。在这种情况下,您不会有磁盘使用开销,但会大大降低性能。

通常在搜索速度和磁盘使用率之间进行权衡。通常最好进行适当的预索引(n-gram方法)以达到所需的性能

关于elasticsearch - 如何在Elasticsearch中选择合适的分析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43938701/

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