假设我们有一个这样的结构,每个条目都指向solr。首先修改文档,然后保存。目前的修改方式是,我们失去了数字和分数之间的联系。但是,如果有必要,我们可以将其更改为其他内容。
"keywords" : [
{
"score" : 1,
"content" : "great finisher"
},
{
"score" : 1,
"content" : "project"
},
{
"score" : 1,
"content" : "staying"
},
{
"score" : 1,
"content" : "staying motivated"
}
]
我们想要的是在查询包含与分数相关联的单词/搭配的情况下,使用"score"值将solr查询结果提升到文档。
所以每个文档都有一个带有分数的关键字的不同"映射"。并且相关度将按照Solr现在的方式正常计算,但是根据这个映射和查询中出现的单词进行提升。
从我所看到的,我们可以根据一些标准来提升结果,但是这个标准是非常动态的——依赖于上下文。不知道如何实现或从哪里开始
目前Solr中还没有内置支持这样做。最理想的方法是将multivalue字段中的每个项分别提升,但目前这是不可能的(进度(尽管没有)在SOLR-2499中被跟踪)。
然而,有一些方法可以解决这个问题;上面的问题跟踪器中建议使用两个。关于使用有效负载和自定义BoostingTermQuery,我不能说太多,但是使用动态字段是可能的。缺点是如果你有很多不同的字段名和查询/排序,那么管理你的缓存大小。如果您有一个包含较少项的小索引,则可以工作,但是包含许多动态字段的大索引(较高的五位数和六位数)将很快消耗您的内存(因为对于每个排序/查询,您将有一个查找缓存,具有与文档计数相同大小的int/long-array)。
另一个建议是考虑将函数查询与boost一起使用。如果在这里引用字段,则可以避免缓存问题。试一试!