java Lucene文本字段未标记化
我正在将以下标题保存到索引中
doc.add(new TextField(TITLE, "Button",Field.Store.YES ));
然后,当我用say“butto”搜索它时,什么也没有返回。我必须搜索“按钮”才能取回任何东西。我必须做什么才能使按钮的任何子字符串都给出结果?我正在使用
StandardAnalyzer analyzer = new StandardAnalyzer();
你可以在下面搜索框中键入要查询的问题!
我正在将以下标题保存到索引中
doc.add(new TextField(TITLE, "Button",Field.Store.YES ));
然后,当我用say“butto”搜索它时,什么也没有返回。我必须搜索“按钮”才能取回任何东西。我必须做什么才能使按钮的任何子字符串都给出结果?我正在使用
StandardAnalyzer analyzer = new StandardAnalyzer();
# 1 楼答案
StandardAnalyzer
只为输入文本创建标记button
,因此,只有对button
的查询与文档匹配。 要搜索按钮的任何子字符串,有两个选项在搜索时,您可以使用不同的查询,例如aPrefixQuery或aWildcardQuery。如果使用查询解析器,则可以使用
butto?
或butto*
在索引时,您可以使用不同的分析器,该分析器将子字符串作为标记来发射,例如EdgeNGramTokenizer,它将根据配置发射
[bu, but, butt, butto, button]
;或者NGramTokenizer,它将为配置的大小发出[bu, ut, tt, to, on]
等等