Search 弹性搜索中同义词命中与常规命中的区分
我们正在使用弹性搜索,作为一项要求的一部分,我们希望能够区分同义词过滤器生成的命中与非同义词生成的命中 例如,如果我们有一个查询,例如: (汽车和红色)和(不是福特) 同义词:红色 那么我们想知道: [红色汽车]是一个简单的打击 但是, [汽车颜色]是由同义词过滤器引起的碰撞 我们的同义词过滤器定义如下:Search 弹性搜索中同义词命中与常规命中的区分,search,lucene,elasticsearch,Search,Lucene,elasticsearch,我们正在使用弹性搜索,作为一项要求的一部分,我们希望能够区分同义词过滤器生成的命中与非同义词生成的命中 例如,如果我们有一个查询,例如: (汽车和红色)和(不是福特) 同义词:红色 那么我们想知道: [红色汽车]是一个简单的打击 但是, [汽车颜色]是由同义词过滤器引起的碰撞 我们的同义词过滤器定义如下: synonym_filter : type : synonym synonyms_path : synonyms.txt
synonym_filter :
type : synonym
synonyms_path : synonyms.txt
ignore_case : true
expand : true
format : solr
由于同义词过滤器通过在索引时修改令牌流来完成其工作,因此可能没有一种简单的方法来完成这项工作。也许通过使用突出显示功能,可能会有一个算法
我想知道是否有人有这种解决方案的经验,或者是否有一个聪明的解决方案来满足这个需求。提前谢谢。我认为最好的解决方案是分别搜索包含同义词的内容和不包含同义词的内容 也就是说,如果要在索引时应用
同义词过滤器
,则对内容进行两次索引,一次不使用同义词,一次使用同义词(可能还有任何其他过滤器,以便于更广泛的搜索)。然后,您可以对这两个字段运行单独的查询,也可以对更直接的字段运行匹配的单个查询