我有字母数字代码,如AA111, 111AA, AA-111, AAAA, 1111
。
"name" : {
"type" : "text",
"analyzer" : "standard",
"fields" : {
"lower_case_sort" : {
"type" : "keyword",
"normalizer" : "lowercase"
}
},
"copy_to" : "default"
}
默认Map如下所示
"default" : {
"type" : "text",
"analyzer" : "index_ngram",
"search_analyzer" : "search_ngram"
},
当我们用AAA
或AA
搜索时,它返回结果。但是当我们用111
搜索时,它不返回任何结果。
下面是查询
"bool" : {
"filter" : [
{
"match" : {
"default" : {
"query" : "111",
"operator" : "AND",
"prefix_length" : 0,
"max_expansions" : 50,
"fuzzy_transpositions" : true,
"lenient" : false,
"zero_terms_query" : "NONE",
"auto_generate_synonyms_phrase_query" : true,
"boost" : 1.0
}
}
},
1条答案
按热度按时间8ljdwjyq1#
当你在你的
default
字段上使用一些分析器时,它会从你的文本中删除数字(简单的分析器就是其中之一),你需要使用一个不像edge-ngram那样删除数字的标记器来搜索它们,或者使用standard
分析器,它也可以处理数字。