【发布时间】:2015-05-31 23:53:36
【问题描述】:
我正在将以下标题保存到索引
doc.add(new TextField(TITLE, "Button",Field.Store.YES ));
然后当我用“按钮”搜索它时,什么也没有返回。我必须搜索“按钮”才能取回任何东西。我该怎么做才能让按钮的任何子字符串给出结果?我正在使用
StandardAnalyzer analyzer = new StandardAnalyzer();
【问题讨论】:
我正在将以下标题保存到索引
doc.add(new TextField(TITLE, "Button",Field.Store.YES ));
然后当我用“按钮”搜索它时,什么也没有返回。我必须搜索“按钮”才能取回任何东西。我该怎么做才能让按钮的任何子字符串给出结果?我正在使用
StandardAnalyzer analyzer = new StandardAnalyzer();
【问题讨论】:
StandardAnalyzer 只为输入文本创建标记 button,因此,只有 button 的查询与文档匹配。
要搜索按钮的任何子字符串,您有两种选择。
在搜索时,您可以使用不同的查询,例如PrefixQuery 或 WildcardQuery。如果使用查询解析器,可以使用butto? 或butto*。
在索引时,您可以使用不同的分析器,将子字符串作为标记发出,例如EdgeNGramTokenizer,它将根据配置发出[bu, but, butt, butto, button];或NGramTokenizer,它将针对配置的大小发出[bu, ut, tt, to, on] 等等。
【讨论】: