Solr yılında, bir RequestHandler aslında belirli bir şekilde gelen istekleri işler bir eklenti (mantık modülü) olduğunu.
Bazı şeyler "yapıyor" aslında arama sorgusu ziyade, istek eylemciler, örnek veri alma için olduğu gibi, sorgu ötesinde işlevsellik sağlayabilir.
Normalde Solr işleyicileri talep belirli uç noktalar (yani URL) olarak yapılandırılmış, ve qt parametresi ile seçilen değildir. Ancak, arama özgü işlemcileri belirli bir şekilde (yani bir işleyici çeşitli sorgu türleri ile başa çıkmak mümkün olabilir) bir sorgu işlemek için sorgu türü parametresini kullanabilirsiniz.
Kullanımı ne işleyici, normalde elde etmek istediğinize bağlı olacaktır. Ben size sağlanan işleyicileri listesini kontrol etmenizi öneririz, ve yapmak istediğiniz ne onların açıklamaları (birçok Wiki sayfaları var) maç olurdu.
Varsayılan SearchHandler dışındaki sorgular için, en sık kullanılan istek işleyicisi (qt=dismax), esas alan önemine göre farklı ağırlık kullanarak çeşitli alanları arasında arama sağlayacak DisMaxRequestHandler olduğunu. Bu genellikle arıyor "gibi Google" olarak insanlar tarafından anılır.
Ayrıca, (bir önceki arama sonucu örneğin) belirli bir belge benzer hit sağlamak için tasarlanmıştır MoreLikeThisHandler bakarak ilginizi çekebilir.
Karışıklık kaynağı olarak, Solr yeni sürümlerinde DisMaxRequestHandler aslında dismax bir sorgu türü ile varsayılan SearchHandler tarafından sağlanan unutmayın.
Eylemciler yapılandırılan solrconfig.xml:
<requestHandler name="dismax" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
<str name="echoParams">explicit</str>
<float name="tie">0.01</float>
<str name="qf">
id^10.0 keyword^1.5 title^1.0 region^0.5 country^0.5 city^0.5
</str>
<str name="pf">
keyword^1.5 title^1.0 region^0.5 country^0.5 city^0.5
</str>
<str name="bf">
</str>
<str name="mm">
2<-1 5<-2 6<90%
</str>
<int name="ps">100</int>
<str name="q.alt">*:*</str>
<!-- example highlighter config, enable per-query with hl=true -->
<str name="hl.fl">text features name</str>
<!-- for this field, we want no fragmenting, just highlighting -->
<str name="f.name.hl.fragsize">0</str>
<!-- instructs Solr to return the field itself if no query terms are
found -->
<str name="f.name.hl.alternateField">name</str>
<str name="f.text.hl.fragmenter">regex</str> <!-- defined below -->
</lst>
Bu durumda, qf her alan için başvuruda alanları ve artırır vardır. Yukarıdaki yapılandırma id, anahtar kelime, başlık, bölge, ülke ve kent genelinde arayacaktır. Daha fazla bilgi (DisMaxRequestHandler geçerlidir) için gelen Wiki sayfasına göz atın.
Bunları kullanmak için en etkili yolu önce ulaşmak istediğiniz tam olarak bilmek kesinlikle, daha sonra işleyicisi açısından en iyi eşleşme bulmak, ve sonra daha sonra ayar sizin ve topluluk beklediğiniz sonuçları sağlamak için yapılandırma.
Tepki yazarlar belirli biçimlerde tepkilerini yazmak için yollarını ve araçlarını sağlayacak eklentileri (mantığının modüller) bulunmaktadır. Şu anda bu kavramı da (sorguda) tepki format parametresi wt tarafından seçilecektir QueryResponseWriter, türevleri ile ilgili olacak aramalar, esas geçerlidir.
PHP ile çalışıyorsanız, o zaman kesinlikle wt=php veya wt=phps kullanarak, isteklerinize PHP samimi yanıtlar üreten ilgi olacaktır.
php tepki evaled edilebilir:
$code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');
eval("\$result = " . $code . ";");
print_r($result);
ve phps tepkisi PHP'nin serileştirme mekanizması ile okunabilir:
$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);
Aslında daha kolay geliştiricilerin XML veya JSON ayrıştırma daha hızlı mekanizmalar kullanarak kendi web uygulamaları içine SOLR entegre yapmak için inşa edilmiştir (vb Ruby, Python Java İkili, gibi) diğerleri için desteği vardır.
Ancak, aynı zamanda ResponseWriter ait diğer türleri vardır vardır aslında bir şablon (örneğin hız) veya (örneğin, XSLT) dönüşümü dayalı transform yanıt. Bu sorgu sonuçları (örneğin, XSLT doğrudan XHTML içine) işlemek için başka bir uygulama bağlıdır istemiyorum bazı durumlarda, yararlı olabilir.
Tepki Yazarlar ayrıca solrconfig.xml, normalde size örneğin ilgilenen olanlar sağlayacak yapılandırılır:
<queryResponseWriter name="xml" class="org.apache.solr.request.XMLResponseWriter" default="true"/>
<queryResponseWriter name="json" class="org.apache.solr.request.JSONResponseWriter"/>
<queryResponseWriter name="php" class="org.apache.solr.request.PHPResponseWriter"/>
<queryResponseWriter name="phps" class="org.apache.solr.request.PHPSerializedResponseWriter"/>
Bunları kullanmak için en etkili yolu, çevreye bağlıdır ve ne elde etmek istediğinizi. PHP ise Açıkçası, bir phps daha iyi (dil aracılığıyla kolay erişim) verebilir ve daha hızlı (yerleşik serileştirme mekanizması, daha az ayrıntılı) sonuçları. Javascript varsa, json sadece vb gitmek için yol olabilir
You see, SOLR is a powerful and versatile plattform :)
If you want to figure a way through the jungle you may want to resort to some book, like "Solr 1.4 Enterprise Search Server" (although I am not sure it really does the best possible job as an introduction). Many things you can best figure out by trial-and-error as well as patience and some online help.
Bu yola çıkmaya yardımcı olur umarım.