solr 排序,我想首先指定一个特定的文档
例如:
结果:5,2,3,1
我要2个,其他按规则排序
2,1,3,5
这该怎么做 ?
我知道您可以尝试使用 Solr 解决此问题的两种方法。
第一个是使用QueryElevationComponent。这使您可以在索引时定义排名靠前的结果。正如文档中所建议的,这对于将赞助结果或热门文档放在搜索结果的顶部很有用。潜在的缺点是您必须能够在索引时而不是在查询时识别这些文档。
另一种方法是在查询时使用bq 参数来提升所需的文档。要提升文档 435,您可以执行以下操作:
...&bq=id:435^10
不幸的是,这些方法都不能让您绝对控制结果的顺序。
如果您不介意在执行搜索后处理结果,那么 Riking 提供的解决方案肯定可以完成这项工作。您可以考虑的另一种方法是向 Solr 模式添加一个字段,用于定义显示顺序或优先级。然后,您可以对该字段进行排序以获得所需的排序顺序。
调用内置的 sort() 函数,然后将所需元素移到前面。
伪代码,以防您没有内置方法将其移到前面:
tmp = desired;
int dIndex = array.indexOf(desired);
for(i=dIndex-1; i >= 0; i--)
{
array[i+1] = array[i]
}
如果您使用标准查询(不是 dismax),请在查询中添加“OR id:2^1000”。像这样:
q=(text:lalala AND author:Bob) OR id:2^1000
这会将 ID=2 的文档放在结果的顶部。