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