【发布时间】:2014-07-18 22:04:37
【问题描述】:
我正在使用 Solr 搜索机构...我的 Solr DB 有大约 40 万个文档,每个文档都有多个字段,例如 ("name","id","city",...)...
我的数据库中的文档如下所示:
"docs":
{
"id": "91348",
"p_code": "71637",
"name": "University of Toronto - Mississauga",
"ext_name": "",
"city": "Mississauga",
"country": "CA",
"state": "ON",
"type": "academic/campus",
"alt_name": "",
"ext_city": "",
"zip": "L5L 1C6",
"alt_ext_city": "",
}
我写了一个类似{name: (university of toronto)}...的查询,前两个匹配项是:
"docs":
{
"id": "91348",
"p_code": "71637",
"name": "University of Toronto - Mississauga",
"ext_name": "",
"city": "Mississauga",
"country": "CA",
"state": "ON",
"type": "academic/campus",
"alt_name": "",
"ext_city": "",
"zip": "L5L 1C6",
"alt_ext_city": "",
"_version_": 1473710223400108000,
"score": 1.499069
},
{
"id": "10624",
"p_code": "7938",
"name": "University of Toronto",
"ext_name": "",
"city": "Toronto",
"country": "CA",
"state": "ON",
"type": "academic",
"alt_name": "Saint George Downtown Campus",
"ext_city": "",
"zip": "M5S 1A1",
"alt_ext_city": "",
"_version_": 1473710220148473900,
"score": 1.4967358
}
看到“University of Toronto - Mississauga”的分数高于“University of Toronto”,我真的很惊讶。直观地说,包含“University of Toronto - Mississauga”的字段应该得到较低的分数,因为它比另一个长。
我也很惊讶地看到 Solr 为 querynorm 提供了不同的值,如下所示: (0.03198291 = queryNorm) 用于排名靠前的文档,(0.03203078 = queryNorm) 用于排名第二的文档。我假设所有文档的查询规范应该完全相同,因为它只是查询的一个函数。
我不确定我是否对 Solr 的工作方式有误,或者索引或配置有什么问题?有人遇到过同样的问题吗?
【问题讨论】:
-
您的完整查询字符串看起来如何? .. 我们是在谈论单个服务器,还是有分片或 SolrCloud 参与?
-
至于为什么短期没有得分提升,我最好的猜测是你有
omitNorms=true。正如您所提到的,在评分时偏爱较短的字段依赖于存储规范。