我想要实现的是寻找‘除臭剂喷雾’匹配‘止汗喷雾’,‘迪奥喷雾’等。
我使用SynonymFilterFactory在索引时间添加除臭剂、除臭剂和止汗剂的同义词。我可以在分析器上看到这个正确的工作。
在此之后,我将运行一个ShingleFilterFactory (maxShingleSize="3")来拆分成单词的组合。这再一次给了我正确的结果,例如分析“测试板短语”:
这就是我们想要的结果。当我把同义词术语和shingles结合起来时,问题就来了。例如,搜索“除臭剂喷雾”应该会给我:
我所有的同义词。但我真正看到的是:
很明显,从每一个同义词术语中都可以制造出瓦状物。我试着换掉我的过滤工厂的订单,但似乎没能让它运转起来。我做错了什么?
发布于 2015-10-22 12:24:01
您唯一能做的就是使用同义词过滤器而不展开--将所有同义词减少到列表中的第一个。然后,您必须在索引时和查询时使用它。
这种方法不会导致文档中描述的问题,因为您也必须在索引上应用过滤器。
考虑以下情况:
对文本的查询:TV将扩展到(文本:TV文本:TV)和较低的文本docFreq (文本:TV):电视将给与“电视”匹配的文档一个更高的分数,而与"TV“相匹配的文档(与”TV“匹配)可能有点违背客户的直觉。索引时间的扩展(或减少)将导致对所有文件使用相同的以色列国防军,而不论原始文本所包含的术语是什么。
但是,如果您想支持文档中描述的多个单词同义词,您可能仍然会遇到问题。
我不知道由同义词组成的标签是否会对搜索结果产生影响,但如果不是,那么只需要在索引中增加空间,所以考虑一下是否想要保存它。
https://stackoverflow.com/questions/28503714
复制相似问题