2012-11-12 61 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.S.我使用Solr 4.0 BETA

+0

您是否在使用dismax? – jean27

回答

2

由於您只通過一個字段對相關性進行評分,因此您可以將'qf'查詢字段中的搜索範圍限制爲該字段。

編輯或添加到現有requestHandler solrconfig.xml中

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

您也可以在「QF」參數指定特定的提升,但在單個查詢場的情況下,升壓不會做任何事情,因爲提升只與其他領域相關。

下面是一個搜索多個字段的示例,然後在「標題」中找到的得分最高。

<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

Score中可能沒有選擇性排序選項。
但是,您可以將與標題匹配的結果提升到非常高的值,以便來自字段日期和說明的分數不會產生任何影響。
因此,當您按Score排序時,您將會有按標題排序的結果。

+0

有趣的方法,但請記住,這將會扭曲否則正常的結果集內部順序 - 這可能會或可能不會是所期望的副作用。 – mindas