我想要达到的目的是寻找除臭喷雾'匹配'止汗喷雾' deo spray'等
我使用SynonymFilterFactory在索引时为除臭剂,除臭剂和止汗剂添加同义词。我可以在分析仪中看到它正常工作。
在此之后,我运行了一个ShingleFilterFactory(maxShingleSize =" 3")来分割成单词的组合。这再一次给了我正确的结果,例如分析'测试木瓦短语'给出:
这是期望的结果。当我将同义词术语与带状疱疹结合使用时会出现问题。例如,搜索除臭喷雾'应该给我:
我所有的同义词。但我实际看到的是:
这显然也是从每个同义词术语中产生带状疱疹。我尝试过更换过滤器工厂的订单,但似乎无法让它工作。我做错了什么?
答案 0 :(得分:0)
您唯一能做的就是使用不扩展的同义词过滤器 - 将所有同义词减少到列表中第一个的同义词。然后你必须在索引时和查询时使用它。
此类方法不会导致documentation中描述的问题,因为您还必须在索引上应用过滤器。
考虑以下情况:
- 带有"文字"的索引字段,在查询时使用SynonymFilter与同义词TV,Televesion并展开=" true"
- 包含术语" text:TV"
的数千个文档- 包含术语"文字:电视"
的几百个文件对文本的查询:电视将扩展为(文本:电视文本:电视)和较低的docFreq文本:电视将提供与电视"电视"一个更高的分数然后匹配" TV"相比之下 - 这可能与客户有点相反。索引时间扩展(或缩减)将导致所有文档的idf相同,无论原始文本包含哪个术语。
但是,如果您想支持多文字同义词,则可能仍会遇到问题,如文档中所述。
我不知道由同义词组成的带状疱疹是否会影响搜索结果,但如果没有,那么只有它花费的是索引中的额外空间,所以请考虑是否要保存它。