Lucene TextField没有标记化

时间:2015-05-31 23:53:36

标签: java lucene tokenize

我将以下标题保存到索引

doc.add(new TextField(TITLE, "Button",Field.Store.YES ));

然后,当我用#34; butto"搜索它时,什么都没有返回。我必须搜索"按钮"得到任何回报。我必须做什么才能使按钮的任何子字符串产生结果?我正在使用

 StandardAnalyzer analyzer = new StandardAnalyzer();

1 个答案:

答案 0 :(得分:3)

StandardAnalyzer仅为输入文本创建令牌button,因此,只有button的查询才会与文档匹配。 要搜索按钮的任何子字符串,您有两种选择。

在搜索时,您可以使用其他查询,例如一个PrefixQueryWildcardQuery。如果您使用查询解析器,则可以使用butto?butto*

在索引时,您可以使用不同的分析器,将子串作为标记发出,例如EdgeNGramTokenizer,它将根据配置发出[bu, but, butt, butto, button];或者NGramTokenizer,它会为配置的大小发出[bu, ut, tt, to, on]等等。