Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.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
solr精确搜索忽略重复短语_Solr - Fatal编程技术网

solr精确搜索忽略重复短语

solr精确搜索忽略重复短语,solr,Solr,我正在使用solr query从文档中搜索关键字。我希望确切的短语排在首位,但我也希望,如果同一短语在文档中重复多次,那么它应该被计算为一个,因为那些在文档中多次出现同一短语的关键字排在首位,因为它们的得分很高 请看下面的结果,因为我正在搜索“php开发者”,找到了两个结果,但都有不同的分数 根据我们的需要,两者的分数应该相同。我想忽略文档中的重复短语 请同时检查架构字段,搜索“工作搜索”字段组合“工作标题、关键技能、关键技能管理、工作详细信息” { “负责人”:{ “状态”:0, “QTi

我正在使用solr query从文档中搜索关键字。我希望确切的短语排在首位,但我也希望,如果同一短语在文档中重复多次,那么它应该被计算为一个,因为那些在文档中多次出现同一短语的关键字排在首位,因为它们的得分很高

请看下面的结果,因为我正在搜索“php开发者”,找到了两个结果,但都有不同的分数

根据我们的需要,两者的分数应该相同。我想忽略文档中的重复短语

请同时检查架构字段,搜索“工作搜索”字段组合“工作标题、关键技能、关键技能管理、工作详细信息”


{
“负责人”:{
“状态”:0,
“QTime”:7,
“参数”:{
“小写运算符”:“true”,
“mm”:“2”,
“debugQuery”:“true”,
“fl”:“职务编号、职务头衔、职务详情、关键技能、关键技能管理、显示日期、分数”,
“缩进”:“正确”,
“q”:“php开发者”,
“stopwords”:“true”,
“wt”:“json”,
“defType”:“edismax”},
“响应”:{“numFound”:110,“start”:0,“maxScore”:2.518858,“docs”:[
{
“作业编号”:“243681”,
“工作头衔”:“php开发人员”,
“作业详情”:“sdf sdf df”,
“关键技能”:“php开发人员”,
“关键技能管理”:“php开发者”,
“显示日期”:“2016-11-11T00:00:00Z”,
“得分”:2.518858},
{
“作业编号”:“243340”,
“职务名称”:“SFSDF”,
“作业详细信息”:“DFSD”,
“关键技能”:“PHP开发人员”,
“关键技能管理”:“PHP开发者”,
“显示日期”:“2016-11-13T00:00:00Z”,
“得分”:2.399412},
]
}

您可以创建自己的自定义相似性类,扩展DefaultSimilarity。 并根据您的用例重写tf方法

public class CustomSimilarity extends DefaultSimilarity {

        //multiple occurrences of terms doesn't affect its relevancy
        @Override
        public float tf(float freq) {
                return 1;
        }
}

只要您不依赖于标记的位置(例如,您不进行短语增强或类似操作),就可以


这将避免存储有关术语频率的任何信息,并且只要术语频率是唯一不同的因素,分数就必然相同。

非常感谢您的建议;现在我们已将solr升级到6.3版,并设置了omitermfrequeandpositions=“true”,omitepositions=“true”。现在,当我们搜索多个单词的确切短语时,会得到以下错误“msg”:“字段\“产品名称\”已被索引,没有位置数据;无法运行短语查询(短语=产品名称:\“basmati rice\”),它对单个单词工作正常。请帮助。
public class CustomSimilarity extends DefaultSimilarity {

        //multiple occurrences of terms doesn't affect its relevancy
        @Override
        public float tf(float freq) {
                return 1;
        }
}