【发布时间】:2015-02-13 16:05:37
【问题描述】:
我想要实现的是搜索“除臭喷雾”匹配“止汗喷雾”、“除臭喷雾”等。
我正在使用 SynonymFilterFactory 在索引时为除臭剂、除臭剂和止汗剂添加同义词。我可以看到它在分析器中正常工作。
在此之后,我正在运行 ShingleFilterFactory (maxShingleSize="3") 以拆分为单词组合。这再次给了我正确的结果,例如分析“测试带状疱疹短语”给出:
- 测试
- 测试瓦
- 测试带状疱疹短语
- 瓦
- 带状疱疹短语
- 短语
这是期望的结果。当我将同义词与带状疱疹结合起来时,问题就来了。例如,搜索“除臭喷雾”应该会给我:
- 除臭喷雾
- deo 喷雾
- 止汗喷雾
我所有的同义词。但我实际看到的是:
- 除臭剂
- 除臭剂
- 除臭剂deo止汗剂
- deo
- deo 止汗剂
- deo 止汗喷雾
- 止汗剂
- 止汗喷雾
这显然也在从每个同义词中产生带状疱疹。我尝试交换过滤器工厂的顺序,但似乎无法使其正常工作。我做错了什么?
【问题讨论】:
-
我应该补充一下,我有 expand=true 这样我就不必在查询时做同义词。如果我使用 expand=false 那么“deo spray”将被索引为“deodorant spray”,这是正确的,但需要我在查询时也运行 SynonymFilter。根据wiki.apache.org/solr/… 的文档,推荐在索引时扩展同义词。