2014-09-12 4 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이고 처음에는 몇 번이고 random.i는 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에는 아무 것도 없습니다. Lucene에서는 문서 필드의 내용을 기반으로 결과를 정렬 할 수 있지만 쿼리의 절 순서는 정렬 할 수 없습니다. 당신이 결과를 정렬해야한다는 의미

자신 :

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

언급 @injecteer로, 내장 된 루씬에 부울 쿼리 조항의 순서를 고려하는 것이 아무것도 없지만 :

각 용어에 부스트를 적용 할 수 있으며 필드가 기본 필드 (즉, TextField이 아님) 인 경우 부스트는 스코어별로 적절한 정렬을 제공하기 위해 명확하게 적용됩니다.

id:95154^6 OR id:68209^5 OR id:89482^4 OR id:94233^3 OR id:112481^2 OR id:93843 
관련 문제