"Çağrı" nasıl yönetilir

4 Cevap java

I have a classifieds website... I have Solr doing the searching of the classifieds, and then return ID:nrs which I then use to put into an array. Then I use this array to find any classifieds in a MySql db where the ID:s match the ID:s in the array returned by Solr.

Bu dizi (100thousand kayıtları veya daha fazla) çok çok büyük olabilir, çünkü Şimdi, sonra sonuçları "sayfa" gerekir, böylece belki 100 bir anda döndü nerede. Ilanları bulmak için MySql s: Ve sonra o 100 kimliği kullanın.

Yani, SOLR ile sayfaya mümkün mü?

Ve eğer öyleyse, nasıl? Ben sonuç lütfen ne olurdu kod örneği gerekiyor ... Ve.

Çoğunlukla Ben tam bir örnek mi!

Teşekkürler

4 Cevap

IBM bir göz atın. Belki de doğru yolda alırsınız.

Sonuçların sayısı: dönmek için sonuçların sayısını belirtir.

Başlangıç: sonuç kümesinde başlatmak için ofset. Bu numaralandırılmasını yararlıdır.

Yani muhtemelen bazı değişiklikler istiyor

<str name="rows">10</str>
<str name="start">0</str>

Sizin Solr istemci çok sorun olmadan sonuç toplam sayısını almak için bir yol vermelidir.

Sayfalama start ile yönetilen ve rows parametreleri, örneğin edilir:

?q=something&rows=10&start=20

Belgenin 20 başlayan, sana 10 belgeleri verecektir.

MySQL diğer bilgileri alma hakkında, kendi konum. Ben ve diğer insanlar already suggested to you MySQL ek sorguları önlemek için Solr her şeyi saklamak için.

"Başlangıç" parametresi arama sonuçlarında içine ofset kontrol, ve "satır" parametre denetimleri kaç belgenin oradan dönmek.

(Pek çok sayfaları üzerinden yineleme) "derin çağrı" yapıyorsanız, o zaman bir cursor to iterate over the result set kullanarak çok daha iyi bir performans elde edebilirsiniz.

Bkz Deep Paging with cursorMark

Ben o Solr geçerli sayfa sonuçlarının bulunan kayıtların toplam sayısının bir sayım ile birlikte döner söylemek değer olduğunu düşünüyorum.

Örneğin çağrı:

http://192.168.0.1:8983/solr/select?qt=edismax&fl=*,score&qf=content^2%20metatag.description^3%20title^5%20metatag.keywords^10&q=something&start=20&rows=10&wt=xml&version=2.2

Yanıttır:

<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int name="QTime">1</int>
        <lst name="params">
            <str name="fl">*,score</str>
            <str name="q">something</str>
            <str name="qf">content^2 metatag.description^3 title^5 metatag.keywords^10</str>
            <str name="qt">edismax</str>
            <str name="wt">xml</str>
            <str name="rows">10</str>
            <str name="version">2.2</str>
            </lst>
        </lst>
        <result name="response" numFound="1801" start="0" maxScore="0.15953878">
            <doc>...</doc>
            <doc>...</doc>
            <doc>...</doc>
...

Using solrj, the method query returns a SolrDocumentList that has the method: getNumFound().