我希望lucene搜索连字符连接的单词,例如:能源效率或“能源效率”作为一个单词
因此,如果输入是能效的,则标记器会生成类似能源或效率、能源效率或能源效率之类的术语。
因此lucene返回的页面同时包含“能源效率”和“能源效率”,但我希望它只返回能源效率的页面
因此,问题是我如何修改标准分词器,使其作为一个完整的单词来搜索节能,而不是将其分割成单独的单词。
发布于 2010-09-01 11:13:25
使用WhitespaceAnalyzer
而不是standardAnalyzer
。
这将生成仅在空格上分割的标记。但请检查其他将被更改的内容。
发布于 2018-10-11 16:49:43
这是我在Lucene and Hyphen上的完整博客
如果你想在StandardAnalyzer
中支持连字符,那么你必须在负责标记化的StandardTokenizerImpl
中进行修改。
StandardTokenizer将连字符连接的单词一分为二例如,"energy- efficient“被标记为energy,efficient。
因为StandardTokenizerImpl.java
是从jFlex生成的类,并且它的输入文件是StandardTokenizerImpl.jflex
,所以您必须在StandardTokenizerImpl.jflex
包含的SUPPLEMENTARY.jflex-macro
中添加以下行
MidLetterSupp = ( [\u002D] )
之后,使用jflex生成StandardTokenizerImpl.java并重新构建索引。
https://stackoverflow.com/questions/3612761
复制相似问题