首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Lucene搜索连字符的单词

使用Lucene搜索连字符的单词
EN

Stack Overflow用户
提问于 2010-09-01 04:03:27
回答 2查看 4K关注 0票数 8

我希望lucene搜索连字符连接的单词,例如:能源效率或“能源效率”作为一个单词

因此,如果输入是能效的,则标记器会生成类似能源或效率、能源效率或能源效率之类的术语。

因此lucene返回的页面同时包含“能源效率”和“能源效率”,但我希望它只返回能源效率的页面

因此,问题是我如何修改标准分词器,使其作为一个完整的单词来搜索节能,而不是将其分割成单独的单词。

EN

回答 2

Stack Overflow用户

发布于 2010-09-01 11:13:25

使用WhitespaceAnalyzer而不是standardAnalyzer

这将生成仅在空格上分割的标记。但请检查其他将被更改的内容。

票数 10
EN

Stack Overflow用户

发布于 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中添加以下行

代码语言:javascript
运行
复制
            MidLetterSupp = ( [\u002D]  ) 

之后,使用jflex生成StandardTokenizerImpl.java并重新构建索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3612761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档