2012-05-01 29 views
6

'a eklemenin doğru yolu Şu anda iyi çalışan bir Solr istemcisi/sunucu çifti çalıştırıyorum. Ancak bazı durumlarda Solr'a gönderilen filtre sorgusu (fq parametresi) oldukça büyüktür (binlerce karakter olabilir) ve kırpılamaz. Sorgu ayrıştırma işlemi only a fraction of the overall time alırken, bu sorgu parçasını sıkıştırıp Solr'a göndererek denemek istiyorum.Özel sorgu parametresini Solr

İstemciyi değiştirmeyi düşünüyordum, bunun yerine fq yerine başka bir parametre kullanıyor (ör. zfq). Solr sonra karar verebilir - zfq alırsa, onu kullanır ve verileri fq içine çözer. Aksi takdirde her zamanki gibi davranmalıdır.

Yukarıdakilere ulaşmanın standart yolu nedir? SearchHandler, requestHandler, <queryParser (hem solrconfig.xml dosyasında) hem de diğerleri gibi görünüyor ve en azından ne kadar müdahaleci olduğundan emin değilim. Ben Lucene/Tomcat ile oldukça güvendeyim ama Solr veri yapıları hakkında fazla bir şey bilmiyorum.

+2

Tek bir fq'de binlerce karakter doğru görünmüyor. Sınırlamalarla uğraşmak yerine, kendinize şu soruyu soruyorsunuz * neden * bu sınırlamalara çarpıyorsunuz. * Gerçek * sorununuzu açıklayın. –

+0

Asıl konu bu sorunun kapsamı dışındadır. Ama bunu duymak istiyorsan - sorun değil! Uzunluk, izinlerin nasıl uygulanacağından kaynaklanır. Geniş izin kümeleri olan müşteriler için, filtre sorgusu şu şekildedir: "*: * -kategori: 1 AND-kategori: 2 AND ... -kategori: N". Desen tekrarlanırken sıkıştırma için mükemmel bir adaydır. – mindas

+0

Bu JIRA sorununu belge düzeyinde güvenlik hakkında gördünüz mü? https://issues.apache.org/jira/browse/SOLR-1834 –

cevap

0

Bu sözdizimi-kategori kullanmayı düşündünüz mü: (1 2 3 4 ... N). Bu dizeyi% 90 oranında azaltmalıdır. Sıkıştırmadan daha iyi.

+0

Keşke puanların süresi dolmamış olsaydı, yanıtı aldığın için biraz uzun sürdü :( – mindas

1

Solr kabınızın aşırı derecede uzun URL'ler almasını sağlayabilirsiniz: Tomcat here, Jetty here.

fq s Bazı varsayılan değerler varsa, varsayılan olarak içeren bir sorgu ayrıştırıcısı oluşturabilirsiniz.

<requestHandler name="for_some_queries" class="solr.SearchHandler" default="true"> 
    <!-- default values for query parameters --> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <str name="fq">MY VERY LONG FQ</str> 
    </lst> 
    </requestHandler> 

Ama daha iyi bir tasarım için Mauricio Scheffer ile katılıyorum.

+0

'fq' asla aynı kalmaz, bu yüzden varsayılan olarak yardımcı olmaz. Asıl sorum, Solr'u nasıl genişleteceğimiz ve bu problemi nasıl çözeceğimiz değil. – mindas

+0

Kötü varsayım o zaman :-) Ancak, uygulama kabınızın başlık uzunluğunu (ve dolayısıyla URL uzunluğunu) arttırmak sorununuzu çözmez mi? – aitchnyu

+0

Bunu zaten yaptım, ancak arşivleme sorgularını denemek ve bu gecikmeyi azaltmaya yardımcı olup olmadığını görmek istiyorum. – mindas