【发布时间】:2018-01-05 00:20:11
【问题描述】:
我无法让 search_analyzer 按预期工作。我希望它将指定的分析器应用于输入的搜索字符串,然后进行搜索。
我将索引分析器设置为 ngram 标记器,带有一个 l大写过滤器 和一个 char 替换(- 到 _)
然后我希望搜索分析器小写并替换(- 到 _)。
示例文档:{"filename": "AAA-BBB"}
应匹配的示例搜索:{"match": "AAA-b"}
相反,我必须使用:{“match”:“aaa_b”}
elasticsearch 版本:5.5
映射:
{
"settings": {
"analysis": {
"tokenizer": {
"DO_tokenizer_ngram": {
"type": "ngram",
"min_gram": 2,
"max_gram": 30
}
},
"analyzer": {
"DO_analyzer_ngram": {
"tokenizer": "DO_tokenizer_ngram",
"char_filter": [
"do_char_filter_dashes"
],
"filter": [
"lowercase"
]
},
"DO_analyzer_search": {
"type": "keyword",
"char_filter": [
"do_char_filter_dashes"
],
"filter": [
"lowercase"
]
}
},
"char_filter": {
"do_char_filter_dashes": {
"type": "pattern_replace",
"pattern": "(\\d+)-(?=\\d)",
"replacement": "$1_"
}
}
}
},
"mappings": {
"images": {
"properties": {
"filename": {
"type": "text",
"analyzer": "DO_analyzer_ngram",
"search_analyzer": "DO_analyzer_search"
}
}
}
}
}
【问题讨论】:
标签: elasticsearch