2013-02-07 49 views
0

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

+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",