0

使用 Sphinx,我可以以任何我想要的方式对文档进行排名。

SELECT *
FROM someIndex
WHERE MATCH('foo bar')
OPTION ranker=expr('<any rank expression>')

如何使用 Solr 实现相同的行为?是{!boost q=<some_boost_expression>}唯一的方法吗?例如,我需要词数越多的文档得分越高:

A: foo bar blah blah blah
B: foo bar

foo bar我需要 A 与查询更相关。现在B有更高的分数。

4

1 回答 1

0

您可以应用 boost 函数(bf 属性)以比简单的查询词 boost 更复杂的方式自定义您的评分。这在DisMax 查询解析器中可用,并且如您所料,在Extended dismax 查询解析器中进一步扩展

规范是您通常期望找到有关字段长度的现成信息的地方,尽管它将与找到的任何字段级别提升相结合,并且您的逻辑(更重地权衡较长的字段)与默认值相反得分。除非您创建自定义相似度,否则这将使支持字段提升和逻辑变得困难。顺便说一句,规范存储在索引时,而不是在查询时计算,如果您决定采用该路线。

于 2013-04-12T18:04:20.743 回答