我将以下标题保存到索引
doc.add(new TextField(TITLE, "Button",Field.Store.YES ));
然后,当我用#34; butto"搜索它时,什么都没有返回。我必须搜索"按钮"得到任何回报。我必须做什么才能使按钮的任何子字符串产生结果?我正在使用
StandardAnalyzer analyzer = new StandardAnalyzer();
答案 0 :(得分:3)
StandardAnalyzer
仅为输入文本创建令牌button
,因此,只有button
的查询才会与文档匹配。
要搜索按钮的任何子字符串,您有两种选择。
在搜索时,您可以使用其他查询,例如一个PrefixQuery或WildcardQuery。如果您使用查询解析器,则可以使用butto?
或butto*
。
在索引时,您可以使用不同的分析器,将子串作为标记发出,例如EdgeNGramTokenizer,它将根据配置发出[bu, but, butt, butto, button]
;或者NGramTokenizer,它会为配置的大小发出[bu, ut, tt, to, on]
等等。