Java 使用另一个字段的值提高字段的相关性(数字)

Java 使用另一个字段的值提高字段的相关性(数字),java,search,solr,lucene,Java,Search,Solr,Lucene,我正在开发一个平台,用户可以在其中组织收藏中的项目。用户可以跟踪每个集合。这些集合随后由Solr编制索引,并可进行搜索。我意识到,如果我对集合名称(以及其中的项目名称)使用一种非常简单的增强方法,那么我得到的结果大部分是具有非常少量项目的集合(这是正常的,因为单词库小得多=>相关性越高)。当然,这不是我想要的 我想要的是能够使用另一个我也在Solr中索引的字段(称为numItems)来提升集合名称 换句话说,与其使用name:query^3,不如使用name:query^numItems,或者更

我正在开发一个平台,用户可以在其中组织收藏中的项目。用户可以跟踪每个集合。这些集合随后由Solr编制索引,并可进行搜索。我意识到,如果我对集合名称(以及其中的项目名称)使用一种非常简单的增强方法,那么我得到的结果大部分是具有非常少量项目的集合(这是正常的,因为单词库小得多=>相关性越高)。当然,这不是我想要的

我想要的是能够使用另一个我也在Solr中索引的字段(称为numItems)来提升集合名称

换句话说,与其使用
name:query^3
,不如使用
name:query^numItems
,或者更好的
name:query“^(numItems*numFollowers)


这可能吗?这是唯一的选择吗?想到的另一件事是尝试按相同的参数对结果进行排序。

最简单的方法是通过schema.xml中的
ommitNormals
字段属性禁用主字段的长度规范化

如果仍然需要微调评分,可以使用函数查询。有关更多信息,请参阅,但下面是一个简短的查询字符串示例,它使用了上面描述的简单boost:

q={!boost b=(numItems*numFollowers)}query

我想那会管用的。明天我会试试看它是否有用,然后我会把它标记为被接受的答案