2013-07-03 106 views
6

我在想如何在Solr結果中訂購組。我想訂購numFound。我看到了如何按分數排列組here,但這看起來實際上並沒有改變我看過的例子,並不完全是我想要的。如何通過計數solr訂購組

在xml中,您可以看到每個組的編號爲numFound,這就是我想要按組排序的方式,例如,我可以看到頂部最大的組。

<arr name="groups"> 
<lst> 
<str name="groupValue">top secret</str> 
<result name="doclist" numFound="12" start="0"> 
... 

任何提示讚賞!謝謝!

回答

0

由於numFound不是Solr中的字段,因此在numFound上排序是不可能的。
檢查discussion提到它不被支持,我也沒有找到JIRA的問題。

0

自從上次查看此文件時不可能。

0

您可以按使用字段

考慮這樣一個例子:

如果你有5個方面,並COUNT與它相關聯。 然後您可以使用每個字段的COUNTS進行排序。

它可以適用於正常/非方面領域。

public class FacetBean implements Category,Serializable { 



private String facetName; //getter , setters 
private long facetCount; // getter , setters 


public FacetBean(String facetName, long count,) { 

    this.facetName = facetName; 
    this.count = count; 
}} 

你調用的方法應該是這樣的

private List<FacetBean> getFacetFieldsbyCount(QueryResponse queryResponse) 
{ 
    List<FacetField> flds = queryResponse.getFacetFields(); 
    List<FacetBean> facetList = new ArrayList<FacetBean>(); 
    FacetBean facet = null; 
    if (flds != null) { 
     for (FacetField fld : flds) { 
      facet = new FacetBean(); 
      facet.setFacetName(fld.getName()); 

      List<Count> counts = fld.getValues(); 

      if (counts != null) { 

       for (Count count : counts) { 
        facet.setFacetCount(count.getCount()); 
       } 
      } 
      facetList.add(facet); 
     } 
    } 

    Collections.sort(facetList,new Comparator<FacetBean>() { 

     public int compare(FacetBean obj1, FacetBean obj2) { 

      if(obj1.getFacetCount() > obj2.getFacetCount()) { 
       return (int)obj1.getFacetCount(); 
      } else { 
       return (int)obj2.getFacetCount(); 
      } 
     } 
    }); 

    return facetList; 
} 

在他們提到類似的相同URL

排序 - >例如:例如,排序=人氣倒序將導致組根據最高人氣DOC

group.sort進行排序 - >您可以在這裏適用的領域。

希望它有幫助。

1

這是一個老問題,但它可能與兩個查詢。

第一個查詢:將您正在分組的字段作爲導航狀態的一組方面。您可以在這裏限制返回0的記錄數:您只需要這些方面。您返回的構面數應該是頁面的大小。

group_id: 
    23 (6) 
    143:(3) 
     5:(2) 

第二個查詢:應該是記錄,所以不需要方面。查詢應該是從第一個查詢返回的facet字段值的OR查詢。 (group_id:23或group_id:143或group_id:5等等),並按照您用於分組的ID進行分組。

排序:對來自查詢2的記錄重新排序以匹配來自查詢1的排序。

這樣做,條件是我不確定OR查詢的可伸縮性如何。如果你想分頁,記住你可以抵消方面:使用它作爲機制而不是取消記錄。