首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr5搜索不显示基于分数的结果

Solr5搜索不显示基于分数的结果
EN

Stack Overflow用户
提问于 2015-06-13 10:36:35
回答 1查看 85关注 0票数 0

我正在执行Solr搜索,搜索顺序不是基于分数显示的。让我们说,如果使用搜索关键字作为.net ios,它将返回基于分数的结果。我有一个字段标题,它保存了以下数据

KeySkills:Android,ios,Phonegap,ios

KeySkills:.net,.net,.net,MVC,

在这里,当我搜索.net ios作为搜索关键字net时,.net、.net、MVC、HTML、CSS在搜索结果中应该是第一位的,因为它包含了3次.net,所以分数应该更高,但我得到的结果正好相反。

是否需要在string文件或schema.xml文件中进行任何设置以实现这一目标,或者如何根据搜索字符串出现的最大值对结果进行排序。请帮我解决这个问题。

以下是我得到的结果

代码语言:javascript
复制
{
"responseHeader": {
"status": 0,
"QTime": 0,
"params": {
 "indent": "true",
 "q": ".net ios",
 "_": "1434345788751",
 "wt": "json"
 }
 },
 "response": {
 "numFound": 2,
 "start": 0,
     "docs": [
    {

    "KeySkills": "Android, ios, Phonegap, ios",
    "_version_": 1504020323727573000,
    "score": 0.47567564

   },
   {

    "KeySkills": "net, net, net, MVC, HTML, CSS",
    "_version_": 1504020323675144200,
    "score": 0.4726259
  }
]
}
}
EN

回答 1

Stack Overflow用户

发布于 2015-06-15 07:48:14

正如您在卢塞内医生中所看到的,分数不仅仅是通过匹配项的数量来估算的:

score(q,d) = coord(q,d) · queryNorm(q) · ∑( tf(t in d)· idf(t)²·t.getBoost()·norm(t,d) ) 其中,tf(t in d)与术语的频率相关,定义为t项出现在当前得分文档d中的次数。 以色列国防军(T)代表反向文档频率。此值与docFreq的逆值(t项出现的文档数)相关。这意味着较少的术语给予更高的贡献,总得分。 coord(q,d)是一个基于在指定文档中找到多少查询项的得分因素。 t.getBoost()是查询文本中指定的查询Q中项t的搜索时间提升。 规范(t,d)封装了一些(索引时间)提升和长度因素:

  • 场助推
  • 当文档被添加到索引中时,根据文档中该字段的标记数计算lengthNorm,因此较短的字段对得分的贡献更大。

当将文档添加到索引中时,所有上述因素都会被乘以。如果文档有多个名称相同的字段,则将它们的所有提升相乘在一起:

范数(t,d) = lengthNorm·∏f.boost()

所以,在这里,我猜"KeySkills": "Android, ios, Phonegap, ios"在其他文档之前,因为它包含的单词比另一个少。

要检查这一点,您可以使用这个很棒的工具,即explain.solr.pl

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30817689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档