我希望lucene搜索带连字符的单词, 例如:节能或“节能”作为一个单词
因此,如果输入是节能的,则tokenizer会生成类似的术语 能源或高效或节能或节能
因此lucene返回包含“节能”和“节能”的页面,但我希望它只返回节能页面
所以问题是我如何修改standardtokenizer来搜索节能作为一个完整的单词而不是将它分成单独的单词。
答案 0 :(得分:8)
使用WhitespaceAnalyzer
代替standardAnalyzer
这将生成仅在白色空间上划分的令牌。但要检查其他可以改变的事情。
答案 1 :(得分:0)
这是我在Lucene and Hyphen上的完整博客
如果要在StandardAnalyzer
中提供对HYPHEN的支持,则必须在StandardTokenizerImpl
中进行更改,以负责标记化。
StandardTokenizer将带连字符的单词分为两部分,例如,“节能”被标记为“节能”。
由于StandardTokenizerImpl.java
是由jFlex生成的类,并且其输入文件为StandardTokenizerImpl.jflex
,因此您必须在SUPPLEMENTARY.jflex-macro
中添加以下行,该行由StandardTokenizerImpl.jflex
包含< br />
MidLetterSupp = ( [\u002D] )
之后,使用jflex生成StandardTokenizerImpl.java并重建索引。