2012-11-12 3 views
0

3 개의 매개 변수를 사용하여 Solr 쿼리를 실행하고 결과를 관련성별로 매개 변수 중 하나 (매개 변수의 조합과 관련 없음)별로 정렬하려고합니다.Solr 점수가 조합 된 쿼리로 정렬

예 : 쿼리의

SolrQuery solrQuery = new SolrQuery(); 
solrQuery.add("title", "some title"); 
solrQuery.add("date", "some date"); 
solrQuery.add("description", "some description"); 

solrQuery.addSortField("score", SolrQuery.ORDER.desc); 

결과가 제목 + 날짜 + 설명의 조합 관련성으로 분류,하지만 난 제목 만 점수를 필요로한다.

어떻게하면됩니까?

P. 나는 Solr 4.0 베타를 사용합니다.

+0

dismax를 사용하고 있습니까? – jean27

답변

2

하나의 필드에 대해서만 관련성을 득점 했으므로 쿼리 필드의 'qf'필드에서 검색을 제한 할 수 있습니다.

편집 또는 당신은 또한 'QF'매개 변수에 특정 부스트를 지정할 수 있습니다

<requestHandler name="/relevant_by_one_field" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="defType">edismax</str> 
     <str name="qf">title</str> 
    </lst> 
</requestHandler> 

solrconfig.xml의 기존 RequestHandler를 추가하지만, 단일 쿼리 필드의 경우, 부스트는하지 않을 것이다 왜냐하면 부스트는 다른 분야의 맥락에서만 관련이 있기 때문입니다.

다음은 여러 필드를 검색 한 다음 가장 높은 '제목'의 결과를 채점하는 예입니다.

<requestHandler name="/relevant_by_multiple_field" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="defType">edismax</str> 
     <str name="qf">title^2 description^0.7 date^0.5</str> 
    </lst> 
</requestHandler> 
2

아마도 점수에 선택 정렬 옵션이 없습니다.
그러나 필드 날짜와 설명의 점수가 아무런 영향을 미치지 않도록 제목에 일치하는 결과를 매우 높은 값으로 올릴 수 있습니다.
그래서 점수순으로 정렬하면 결과가 제목별로 정렬됩니다.

+0

흥미로운 방법이지만, 그렇지 않으면 정상적인 결과가 내부 순서를 왜곡 할 것이라는 점을 명심하십시오. 원하는 부작용이있을 수도 있고 그렇지 않을 수도 있습니다. – mindas