Solr自定义排名

时间:2013-04-12 09:52:29

标签: solr lucene full-text-search sphinx

使用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

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

1 个答案:

答案 0 :(得分:0)

您可以应用bo​​ost函数(bf属性)以比简单查询术语提升更复杂的方式自定义您的评分。这可以在DisMax query parser中找到,正如您所料,Extended dismax query parser

进一步扩展了

norm是您通常希望找到有关场地长度的信息的地方,虽然它会与找到的任何场级增强相结合,并且您逻辑(更长时间地权衡更长场) )是默认评分的反面​​。除非您创建自定义相似性,否则这将使支持字段增强和逻辑变得困难。顺便说一句,如果您决定采用该路线,则在索引时存储规范,而​​不是在查询时计算。