8

Solr の結果でグループを並べ替える方法を考えています。グループを で並べ替えたいnumFoundここでグループをスコアで並べ替える方法を見ましたが、それは実際に私が見た例に違いをもたらすようには見えず、まさに私が望んでいたものではありません.

xml では、グループごとの数を確認できます。これはnumFound、グループを並べ替えたいものです。たとえば、最大のグループを一番上に表示できます。

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

どんなヒントでも大歓迎です!ありがとう!

4

4 に答える 4

1

前回これを調べたときから不可能です。

于 2013-07-04T05:01:02.667 に答える
1

numFound は Solr のフィールドではないため、numFound でのソートはできません。サポートされていないことを言及している ディスカッション
を 確認してください。また、この問題に対してオープンな JIRA も見つかりませんでした。

于 2013-07-04T05:03:04.323 に答える
0

フィールドを使用して並べ替えることができます

例を考えてみましょう:

5 つの FACETS と 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で彼らは次のようなことを述べています。

sort -- >ex : たとえば、sort=popularity descを指定すると、最も人気の高いドキュメントに従ってグループが並べ替えられます。

group.sort --> ここでフィールドを適用できます。

それが役に立てば幸い。

于 2013-07-05T08:45:38.267 に答える