28 votes

Quelqu'un pourrait-il expliquer en détail les gestionnaires de demandes SOLR et les rédacteurs de réponses?

Tout d'abord, de nombreuses parties de la solr wiki n'est pas très utile pour quelqu'un qui a simplement appris à l'index et les champs de recherche. Il semble qu'il est écrit pour les experts! Il utilise des termes qui est RELATIF à solr, il est donc très difficile de le comprendre sans le lire à plusieurs reprises.

NOTE: j'ai un site de petites annonces où les annonces les plus récentes montre toujours la première, de sorte que le tri n'est pas pertinent pour moi, sauf pour le tri sur le prix et la date pas d'autres options sont disponibles pour les utilisateurs, et le nombre de résultats par page.

Je connais requestHandler est un moyen de "faire des trucs à la requête de droite"? Mais comment savoir quels gestionnaire à utiliser est dur pour moi. Et comment faire pour configurer un aussi. Tout ce que je sais est le gestionnaire est spécifié dans la chaîne de requête comme "qt=my_handler".

Aussi, les mêmes questions qui s'appliquent à l' responseWriters, pour l'utiliser? Comment faire pour configurer?

Que dois-je savoir au sujet de ces gestionnaires?

Comment est un bon et efficace façon de les utiliser?

Je devrais vraiment écrire quelque chose à propos de l'obtention solr mises en œuvre dans un site PHP après j'ai appris toutes ces choses.

Merci à tous pour votre aide!

52voto

Dieter Points 959

Dans Solr, un RequestHandler est essentiellement un plugin (module de logique) qui gère les demandes entrantes d'une manière particulière.

Plutôt que de "faire" des trucs à la requête de recherche, demande, les gestionnaires peuvent fournir des fonctionnalités au-delà des requêtes, comme par exemple l'importation de données.

Normalement, les gestionnaires de demandes dans Solr sont configurés pour être précis des extrémités (c'est à dire l'URL), et n'est pas sélectionnée par le biais de l' intervalle qt paramètre. Toutefois, la recherche spécifique, les gestionnaires peuvent utiliser le type de requête de paramètre à gérer une requête d'une manière spécifique (c'est à dire un gestionnaire peut être en mesure de faire face à divers types de requêtes).

Ce gestionnaire à utiliser, normalement dépendent de ce que vous voulez atteindre. Je voudrais vous suggérer de consulter la liste de gestionnaires, et correspondent à leurs descriptions (beaucoup ont des pages Wiki) de ce que vous voulez faire.

Pour les requêtes, autre que la valeur par défaut SearchHandler, le plus couramment utilisé à la demande du gestionnaire de la DisMaxRequestHandler (qt=dismax), qui sont essentiellement une recherche sur plusieurs champs à l'aide de différents pondération basé sur le champ de signification. Cela est souvent appelé par les gens comme "Google" comme de la recherche.

Aussi, vous pouvez être intéressé à regarder le MoreLikeThisHandler, qui a été conçu pour fournir des résultats qui sont similaires à un document spécifique (par exemple à partir d'un précédent résultat de recherche).

Notez que comme une source de confusion, la DisMaxRequestHandler dans les versions plus récentes de Solr est en fait fournie par le défaut SearchHandler avec un type de requête de dismax.

Les gestionnaires sont configurés dans 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&lt;-1 5&lt;-2 6&lt;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>

Dans ce cas, qf sont les champs et les stimule à appliquer pour chaque champ. La configuration ci-dessus va rechercher dans l'id, mot-clé, titre, région, pays et de la ville. Découvrez le correspondant de la page Wiki pour plus d'info (DisMaxRequestHandler s'applique).

Le moyen le plus efficace de les utiliser est certainement d'abord savoir exactement ce que vous voulez atteindre, puis de trouver le meilleur compromis en termes de gestionnaire, puis par la suite régler la configuration de fournir les résultats que vous et votre communauté pourrait s'attendre.

Réponse écrivains sont des plugins (modules de logique) qui fournira les moyens d'écrire les réponses dans des formats spécifiques. Actuellement, ce concept s'applique surtout à des recherches, où vous ferez face à des dérivés de la QueryResponseWriter, qui à son tour seront sélectionnés par le format de la réponse de paramètre wt (dans la requête).

Si vous travaillez avec PHP, alors vous serez certainement intéressé à générer PHP amicale des réponses à vos demandes, à l'aide de wt=php ou wt=phps.

Le php réponse peut être evaled:

$code = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=php');
eval("\$result = " . $code . ";");
print_r($result);

et le phps réponse peut être lu avec PHP mécanisme de sérialisation de:

$serializedResult = file_get_contents('http://localhost:8983/solr/select?q=iPod&wt=phps');
$result = unserialize($serializedResult);
print_r($result);

Il ya un soutien pour les autres (comme Ruby, Python, Java Binaire, etc), qui ont été la construction pour le rendre plus facile pour les développeurs d'intégrer SOLR dans leurs applications web à l'aide de mécanismes qui sont plus rapides que l'analyse de XML ou JSON.

Cependant, il existe également d'autres types de ResponseWriter qui fait de transformer la réponse basée sur un modèle (par exemple la Vitesse) ou une transformation (par exemple, XSLT). Cela peut être utile dans certaines situations, lorsque vous ne voulez pas dépendre d'une autre application pour traiter les résultats de la requête (par exemple XSLT directement en XHTML).

Réponse Écrivains sont également configurés dans le solrconfig.xmlnormalement vous permettra à ceux qui vous intéressent par exemple:

<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"/>

Le moyen le plus efficace de les utiliser dépend de votre environnement et de ce que vous voulez atteindre. Évidemment, si vous êtes en PHP, un phps peut vous donner une meilleure (facile d'accès par le biais de la langue) et plus rapide (intégré dans le mécanisme de sérialisation, moins verbeux) résultats. Si en Javascript, json peut être que le chemin à parcourir etc.

Vous voyez, SOLR est un outil puissant et polyvalent plattform :) Si vous souhaitez trouver un chemin à travers la jungle, vous pouvez recourir à certains livres, comme "Solr 1.4 Enterprise Search Server" (bien que je ne suis pas sûr qu'il fait vraiment le meilleur travail possible en introduction). Beaucoup de choses que vous pouvez mieux déterminer par essais et erreurs ainsi que de la patience et de l'aide en ligne.

Espérons que cela aide pour y arriver.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X