我试图让 Elasticsearch 索引一些文档以获取预先输入的建议。据我所知,Elasticsearch 中的边缘 NGram 处理是由下面的 Lucene 提供的。不幸的是,事实证明 Lucene 在这方面的文档对我来说很难理解。我想出的最好的方法是基于https://gist.github.com/988923,但它似乎不起作用(具有这些设置的索引仅返回完整单词的匹配项,就好像设置没有存在):
{
"settings":{
"index":{
"analysis":{
"analyzer":{
"typeahead_analyzer":{
"type":"custom",
"tokenizer":"edgeNGram",
"filter":["typeahead_ngram"]
}
},
"filter":{
"typeahead_ngram":{
"type":"edgeNGram",
"min_gram":1,
"max_gram":8,
"side":"front"
}
}
}
}
}
}
我真的不知道分析器、标记器和过滤器是如何结合在一起的——我什至想要一个过滤器吗?我应该只有一个标记器吗?当我为要使用的文档编制索引时,是否必须参考这些设置?如何找出 Lucene 下面对给定索引使用的设置?我该如何调试?帮助 :-)