我们正在使用弹性搜索,并且作为要求的一部分,我们希望能够区分同义词过滤器生成的匹配与非同义词的匹配。
例如,如果我们有一个查询,例如:
(汽车和红色)和(非福特)
使用同义词:color< - >红色
然后我们想知道:
[红色汽车]很简单。
但是,
[汽车的颜色]是由同义词过滤器引起的命中。
我们的同义词过滤器定义如下:
synonym_filter :
type : synonym
synonyms_path : synonyms.txt
ignore_case : true
expand : true
format : solr
由于同义词过滤器通过在索引时修改令牌流来完成其工作,因此可能没有直接的方法来执行此操作。也许通过使用突出显示功能可能会有算法。
我想知道是否有人有这种解决方案的经验,或者是否存在针对此要求的聪明解决方案。提前谢谢。
答案 0 :(得分:1)
我认为最好的解决方案是将内容与同义词分开搜索,而不是内容。
也就是说,如果您在索引时应用SynonymFilter
,则将内容索引两次,一次没有同义词,一次使用同义词(可能还有其他任何过滤器以便进行更广泛的搜索)。然后,您可以针对这两个字段运行单独的查询,或者您可以运行单个查询,并使针对更直接字段的匹配显着提升。