设置:
{
"settings": {
"analysis": {
"analyzer": {
"idx_analyzer_ngram": {
"type": "custom",
"filter": [
"lowercase",
"asciifolding",
"edgengram_filter_1_32"
],
"tokenizer": "ngram_alltokenchar_tokenizer_1_32"
},
"ngrm_srch_analyzer": {
"filter": [
"lowercase"
],
"type": "custom",
"tokenizer": "keyword"
}
},
"tokenizer": {
"ngram_alltokenchar_tokenizer_1_32": {
"token_chars": [
"letter",
"whitespace",
"punctuation",
"symbol",
"digit"
],
"min_gram": "1",
"type": "nGram",
"max_gram": "32"
}
}
}
}
}
映射:
{
"properties": {
"TITLE": {
"type": "string",
"fields": {
"untouched": {
"index": "not_analyzed",
"type": "string"
},
"ngramanalyzed": {
"search_analyzer": "ngrm_srch_analyzer",
"index_analyzer": "idx_analyzer_ngram",
"type": "string",
"term_vector": "with_positions_offsets"
}
}
}
}
}
询问:
{
"query": {
"filtered": {
"query": {
"query_string": {
"query": "have some ha",
"fields": [
"TITLE.ngramanalyzed"
],
"default_operator": "and"
}
}
}
},
"highlight": {
"fields": {
"TITLE.ngramanalyzed": {}
}
}
}
我有用 TITLE 索引的文档,吃点开心的饭。当我搜索有一些时,我能够得到适当的亮点。
<em>have</em> <em>some</em> happy meal
当我输入更多有一些 ha时,突出显示的结果并不像预期的那样。
<em>ha</em>ve <em>some</em> <em>ha</em>ppy meal
have单词部分突出显示为ha。
我希望它突出显示最长的匹配标记,因为对于最小大小 = 1 的 ngram,这给了我 1 个或更多字符的突出显示,而应该有另一个匹配的 4 或 5 个字符的标记(例如:也应该与ha一起突出显示。
我无法找到任何解决方案。请建议。