使用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有更高的分数。
答案 0 :(得分:0)
您可以应用boost函数(bf属性)以比简单查询术语提升更复杂的方式自定义您的评分。这可以在DisMax query parser中找到,正如您所料,Extended dismax query parser
进一步扩展了norm是您通常希望找到有关场地长度的信息的地方,虽然它会与找到的任何场级增强相结合,并且您逻辑(更长时间地权衡更长场) )是默认评分的反面。除非您创建自定义相似性,否则这将使支持字段增强和逻辑变得困难。顺便说一句,如果您决定采用该路线,则在索引时存储规范,而不是在查询时计算。