适用于Lucene的分析器,用于不区分大小写,包含'匹配

时间:2014-06-22 19:25:22

标签: java lucene

我正在使用Lucene在java servlet上创建搜索项的索引。

用户在网页上输入文本,并向servlet发出ajax请求以获取与查询字符串匹配的任何字符串。结果用于填充网页上的自动完成菜单。

目前,Lucene代码仅在用户输入整个单词时才发送回匹配。我希望它返回结果,即使只有1个字母匹配索引中的项目。换句话说,无论输入字符串有多小,我如何让Lucene代码匹配整个输入字符串?我是否需要更改正在使用的分析仪?我正在使用标准分析仪:

StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_47);

1 个答案:

答案 0 :(得分:0)

对单个字母进行匹配会破坏反向文本引擎的目的,并且标准分析器都不会这样做。如果你坚持,你可以使用最小和最大设置为1的http://lucene.apache.org/core/4_8_0/analyzers-common/org/apache/lucene/analysis/ngram/NGramTokenizer.html。你需要建立自己的分析器对象,但无论如何这是个好主意。

基于评论的澄清,即OP希望跨越空白边界匹配:

这不是倒排索引的工作。反向索引通过索引所有可匹配的字符串来工作。要匹配所有任意长度子串的输入,需要一个巨大的索引,而且速度太慢。你完全需要别的东西。