Solr基于word:value的映射增加搜索结果的相关性

时间:2014-07-20 18:45:58

标签: mongodb solr keyword relevance

让我们说每个条目我们有一个这样的结构去solr。该文件首先进行修改,然后保存。目前修改的方式是我们失去了数字和分数之间的联系。但是,如果有必要,我们可以将其更改为其他内容。

"keywords" : [
            {
                    "score" : 1,
                    "content" : "great finisher"
            },
            {
                    "score" : 1,
                    "content" : "project"
            },
            {
                    "score" : 1,
                    "content" : "staying"
            },
            {
                    "score" : 1,
                    "content" : "staying motivated"
            }
    ]

我们想要的是使用"得分来提升文档的solr查询结果"查询包含与分数关联的单词/并置的情况下的值。

所以每个文档都有一个不同的" map"带分数的关键字。并且相关性将通常计算Solr现在如何做,但根据此映射和查询中出现的单词进行提升。

从我看到的情况来看,我们可以根据某些标准对结果进行提升,但这个标准非常动态 - 取决于上下文。不确定如何实施或从哪里开始。

1 个答案:

答案 0 :(得分:0)

目前Solr没有内置支持来做这样的事情。最理想的方法是让multiValued字段中的每个术语单独提升,但目前这是不可能的(SOLR-2499)中跟踪进度(尽管没有)。

然而,有办法解决这个问题;上面的问题跟踪器中建议了两个。我不能多说使用有效负载和自定义BoostingTermQuery,但使用动态字段是可能的。缺点是管理缓存大小,如果你有许多不同的字段名称和查询/排序大多数。如果你有一个较小的索引和较少的术语,它会起作用,但是一个较大的(在高五和六位数字中)有很多动态字段会快速耗尽你的内存(因为你对每个排序/查询将有一个查找缓存与与文档计数大小相同的int / long-array。

另一个建议是看using function queries together with a boost。如果您在此处引用该字段,则可以避免缓存问题。试试吧!