solr sort,i want首先指定一个特定的文档

时间:2012-05-17 02:57:53

标签: solr

solr sort,i want在第一个

指定特定文档

例如:

结果: 5,2,3,1

我想在第一个 2 ,其他按照规则排序

2,1,3,5

怎么做?

4 个答案:

答案 0 :(得分:2)

我知道有两种方法可以尝试使用Solr解决这个问题。

首先是使用QueryElevationComponent。这使您可以在索引时定义顶部结果。正如文档中所建议的,这适用于将赞助结果或热门文档放在搜索结果的顶部。潜在的缺点是您必须能够在索引时而不是在查询时识别这些文档。

另一种方法是使用bq parameter在查询时提升所需文档。要提升文档435,您可以执行以下操作:

...&bq=id:435^10

不幸的是,这些方法都不能让您完全控制结果的顺序。

如果您不介意在执行搜索后处理结果,Riking提供的解决方案肯定会起作用。您可以考虑的另一种方法是向Solr架构添加一个字段,用于定义显示顺序或优先级。然后,您可以对该字段进行排序以获得所需的排序顺序。

答案 1 :(得分:2)

如果您使用的是Solr 3.1或更高版本,则可以sort by a function querymap函数对此很有用。

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的文档放在结果的顶部。