Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search 弹性搜索中同义词命中与常规命中的区分_Search_Lucene_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Search,Lucene,elasticsearch" /> elasticsearch,Search,Lucene,elasticsearch" />

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
由于同义词过滤器通过在索引时修改令牌流来完成其工作,因此可能没有一种简单的方法来完成这项工作。也许通过使用突出显示功能,可能会有一个算法


我想知道是否有人有这种解决方案的经验,或者是否有一个聪明的解决方案来满足这个需求。提前谢谢。

我认为最好的解决方案是分别搜索包含同义词的内容和不包含同义词的内容

也就是说,如果要在索引时应用
同义词过滤器
,则对内容进行两次索引,一次不使用同义词,一次使用同义词(可能还有任何其他过滤器,以便于更广泛的搜索)。然后,您可以对这两个字段运行单独的查询,也可以对更直接的字段运行匹配的单个查询