如何以查询中指定的给定顺序获取solr结果

时间:2014-09-12 11:28:08

标签: grails solr

我已将框架查询提交给solr,格式如下。

id:95154 OR id:68209 OR id:89482 OR id:94233 OR id:112481 OR id:93843

我希望从开始按顺序获取记录。说我需要首先获取id为95154的文档,然后是id 68209,依此类推。但它现在没有发生它的最后一个id 93843,有时候是random.i我在grails 2.1中使用solr而我的solr版本是1.4.0。这是我从solr获取文件的示例方式

def server = solrService.getServer('provider')
            SolrQuery sponsorSolrQuery = new SolrQuery(solarQuery)
            def queryResponse = server.query(sponsorSolrQuery);
            documentsList = queryResponse.getResults()

2 个答案:

答案 0 :(得分:0)

在Lucene中没有这样的东西(我强烈认为,在Solr中也是如此)。在Lucene中,您可以根据文档的内容对结果进行排序。字段,但不是查询中子句的顺序。

这意味着,您必须自己对结果进行排序:

documentsList = queryResponse.getResults()
def sordedByIdOrder = solarQueryAsList.collect{ id -> documentList.find{ it.id == id } }

答案 1 :(得分:0)

正如@injecteer所提到的,Lucene没有内置任何内容来考虑布尔查询中的子句序列,但是:

你可以对每个术语应用提升,只要该字段是一个基本字段(意思是,而不是TextField),提升将适用于干净的分数。< / p>

id:95154^6 OR id:68209^5 OR id:89482^4 OR id:94233^3 OR id:112481^2 OR id:93843