弹性搜索前缀,后缀,EdgeGram

时间:2013-02-07 09:04:42

标签: java elasticsearch

如何通过中间或最后一个英文字母字母搜索单词。例如,公司是一个单词,我可以使用EdgeGram和前缀过滤器搜索像COR,CO,C等首字母缩写的公司。但我无法使用POR或RATI或ION的公司的最后字母或中间字母进行搜索。弹性搜索是否支持此功能?如果是,那么我该如何解决这个问题。

1 个答案:

答案 0 :(得分:2)

nGram tokenizer会做你想要的。它就像Edge-nGram标记器,除了它遍历整个单词而不是锚定到一个边缘。

$ curl localhost:9200/test/_analyze?tokenizer=ngram&pretty' -d 'corporation' | grep token

"tokens" : [ {
"token" : "c",
"token" : "o",
"token" : "r",
"token" : "p",
"token" : "o",
"token" : "r",
"token" : "a",
"token" : "t",
"token" : "i",
"token" : "o",
"token" : "n",
"token" : "co",
"token" : "or",
"token" : "rp",
"token" : "po",
"token" : "or",
"token" : "ra",
"token" : "at",
"token" : "ti",
"token" : "io",
"token" : "on",