gpt4 book ai didi

lucene - 在 Solr 中替换 ord() 和 rord() 函数查询的推荐策略是什么?

转载 作者:行者123 更新时间:2023-12-02 02:26:19 25 4
gpt4 key购买 nike

我在 Solr 查询中使用 rord() 函数来提高针对“排名”字段的查询结果,使用类似这样的语法:

bf=rord(cur_rank)^1.8

该算法运行良好,但最近 Solr 的变化表明使用 ord() 和 rord() 现在是一个内存消耗。来自 the changelog :

Searching and sorting is now done on a per-segment basis, meaning that the FieldCache entries used for sorting and for function queries are created and used per-segment and can be reused for segments that don't change between index updates. While generally beneficial, this can lead to increased memory usage over 1.3 in certain scenarios:

[...]

2) Certain function queries such as ord() and rord() require a top level FieldCache instance and can thus lead to increased memory usage. Consider replacing ord() and rord() with alternatives, such as function queries based on ms() for date boosting.

它提到了处理基于日期的提升的可能策略,但是对于像“rank”这样的数字怎么样,其中 rank 是一个介于 1 和记录总数之间的数字?

rord() 似乎很理想……还有其他策略吗?

最佳答案

使用基于段的字段缓存的要点是减少加载时间。如果你想在添加了一个新的段(每次提交时都这样做)后获取一个字段的值,你只需要为新添加的段加载一个新的字段缓存。

这对于 ord 和 rord 是不可能的,它们为您提供整个索引的序号而不是单个文档的值。

因此唯一的解决方案是根据字段“cur_rank”的值而不是它的 ord 来计算提升。

这就是日期提升现在的工作方式:它过去使用日期字段的 rord 来计算提升,而现在它使用日期字段值和现在之间的毫秒数。参见 http://wiki.apache.org/solr/SolrRelevancyFAQ (“我怎样才能提高较新文档的分数”)了解更多详情。

关于lucene - 在 Solr 中替换 ord() 和 rord() 函数查询的推荐策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com