我的弹性服务器中有文本索引。 我已经实现了NGRAM分词是这样的:在文本中使用ngram搜索搜索模式的最小字符和以上
"analysis": {
"analyzer": {
"ngram_analyzer": {
"type": "custom",
"tokenizer": "ngram_tokenizer"
}
},
"tokenizer": {
"ngram_tokenizer": {
"type": "ngram",
"min_gram": "3",
"max_gram": "7"
}
}
},
比方说我的数据是
“你好美丽的世界ELL”
当我把查询匹配“地狱” 我希望它只发现我的第一个字(你好),而不是字ell,所以basickly我不希望它“打破”我的搜索模式只是为了在我的数据中找到它(与4个字符,而不是下面)
谢谢
你好将被标记为 - >“Hel,ell,llo,hell,ello,hello”和ell as - >“ell”,当你搜索它时,你仍然只有一个结果,那就是你的整个字符串 - >“你好美丽的世界埃尔”。 可以说,你有列表句子,一个是“你好美丽的世界”,另一个是“美丽的世界”,你搜索“埃尔”你会得到它们,因为这是你的标记器如何索引它们。 – mirzak
我同意你的意见,但我正在寻找地狱,而且我希望得到地狱和你好,而不是呃(因为我没有搜索它 - 它有更少的字母和缺少H)这个词 –
我不明白的是为什么搜索者正在打破我的言论进入Hel,Ell,地狱,不仅寻找地狱 –