Pertanyaan cara memesan grup dengan menghitung dalam satuan


Saya ingin tahu cara memesan grup dalam hasil Solr. Saya ingin memesan grup oleh numFound. Saya melihat cara memesan kelompok berdasarkan skor sini, tetapi itu tidak benar-benar membuat perbedaan dalam contoh yang saya lihat, dan tidak persis seperti yang saya inginkan.

Di xml Anda dapat melihat jumlah per grup sebagai numFound dan itulah yang saya ingin mengurutkan kelompok-kelompok itu, jadi misalnya saya dapat melihat kelompok terbesar di bagian atas.

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

Kiat apa pun dihargai! Terima kasih!


6
2017-07-03 20:48


asal


Jawaban:


Menyortir pada numFound tidak dimungkinkan karena numFound bukan merupakan bidang di Solr.
Periksalah diskusi menyebutkan itu tidak didukung dan saya tidak menemukan JIRA terbuka untuk masalah ini juga.


0
2017-07-04 05:03



Ini pertanyaan lama, tapi itu aku s mungkin dengan dua pertanyaan.

Kueri pertama: kembalikan bidang yang dikelompokkan sebagai serangkaian aspek untuk status navigasi Anda. Anda dapat membatasi jumlah catatan yang dikembalikan ke 0 di sini: Anda hanya perlu aspek. Jumlah faset yang Anda kembalikan harus sesuai dengan ukuran halaman Anda.

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

Kueri kedua: Seharusnya untuk catatan, jadi tidak ada aspek yang diperlukan. Kueri harus berupa kueri OR untuk nilai bidang faset yang dikembalikan dari kueri pertama. (group_id: 23 ATAU group_id: 143 OR group_id: 5 dan seterusnya) dan dikelompokkan berdasarkan id yang Anda gunakan untuk pengelompokan.

Menyortir: menyusun ulang catatan dari permintaan 2 untuk mencocokkan pesanan dari kueri 1.

Itu akan melakukannya, dengan syarat bahwa saya tidak yakin bagaimana scalable yang permintaan OR akan. Jika Anda ingin memberi nomor pustaka, ingat bahwa Anda dapat mengimbangi aspek: gunakan itu sebagai mekanisme alih-alih mengimbangi catatan.


1
2018-02-10 09:52



Tidak mungkin sejak terakhir kali saya melihat ini.


0
2017-07-04 05:01



Anda dapat mengurutkan menggunakan bidang

pertimbangkan sebuah Contoh:

Jika Anda memiliki 5 FACET dan COUNT terkait dengannya. Kemudian Anda dapat mengurutkan menggunakan COUNTS dari masing-masing bidang.

Ini dapat diterapkan ke bidang normal / non-faset.

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;
}}

Metode panggilan Anda harus seperti ini

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;
}

Pada bagian yang sama URL Mereka telah menyebutkan sesuatu seperti itu.

sort -> ex: Misalnya, sortir = peringkat popularitas akan menyebabkan grup diurutkan sesuai dengan dokumen popularitas tertinggi

group.sort -> Anda dapat menerapkan bidang Anda di sini.

Semoga itu membantu.


0
2017-07-05 08:45