2014-09-12 19 views
0

我有框架查詢提交給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,有些時候是隨機的。我在grails 2.1中使用solr,而我的solr版本是1.4.0。這裏是我從索爾獲取文檔的示例方式

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

回答

0

Lucene中沒有這樣的東西(我強烈假定,在Solr中也是這樣)。在Lucene中,您可以根據文檔字段的內容對結果進行排序,但不能根據查詢中的子句順序進行排序。

這意味着,你必須對結果進行排序自己:

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

由於@injecteer提到,沒有什麼內置Lucene的考慮在布爾查詢子句的順序,而是:

您可以對每個術語應用助推,只要該字段是基本字段(意思是,不是TextField),助推器將會乾淨利落地按照分數給予適當的排序。

id:95154^6 OR id:68209^5 OR id:89482^4 OR id:94233^3 OR id:112481^2 OR id:93843 
相關問題