Publié par Philippe VINCENT-ROYOL, le 15/05/2012 16:57 dans solr, suggest, autocompletion, flexible | 0 commentaires
Apache Solr est un moteur de recherche libre basé sur la bibliothèque Lucene, proposant des API XML et JSON par HTTP. C'est un outil extrêmement puissant mais il peut être difficile d'accès pour des configurations avancées. Aujourd'hui je vais vous détailler le paramètrage afin d'avoir de l'autocomplétion beaucoup plus flexible avec le composant sugester.
Avant toute chose, vérifier la version de Solr. Ce composant est uniquement disponible avec solr 3.1 minimum.
Je vous conseille dans un premier temps de faire un backup du fichier de configuration solrconfig.xml. Dans un premier temps, il va falloir indiquer à solr que nous allons utiliser un composant dont l'accès sera par exemple: http://localhost:8983/solr/suggest?q=e
<searchComponent name="suggest" class="solr.SpellCheckComponent"> <lst name="spellchecker"> <str name="name">suggest</str> <str name="classname">org.apache.solr.spelling.suggest.Suggester</str> <str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str> <str name="field">attr_name_t</str> </lst> </searchComponent>
Une petite explication avant de continuer:
name: nom du composant
lookupImpl: un objet traitant la recherche. Ici nous avons quatre possibilités: JasperLookup (représentation sous forme d'arbre basé sur Jaspell), TSTLookup (représentation sous forme d'arbre avec possibilité de mise à jour immédiate des structures de données), FSTLookup (automate basé sur la représentation; lent à construire mais consomme moins de mémoire) et WFSTLookup (automate utilisant la représentation pondérée; une alternative à FSTLookup pour un classement plus fin. A partir de Solr 3.6 minimum).
field: le champ à partir duquel les suggestions seront générées.
Et enfin il manque une seconde partie qui est le requestHandler.
<requestHandler name="/suggest" class="org.apache.solr.handler.component.SearchHandler"> <lst name="defaults"> <str name="spellcheck">true</str> <str name="spellcheck.dictionary">suggest</str> <str name="spellcheck.count">10</str> </lst> <arr name="components"> <str>suggest</str> </arr> </requestHandler>
N'oubliez pas de redémarrer Solr et qu'il n'y ai aucun warning ni error. Si vous avez créer un champ custom n'oubliez pas de réindexer cela peut aider ;)
Bref testons voir si vous avez bien des résultats via l'url: http://localhost:8983/solr/suggest?q=e
Il ne vous reste plus qu'à utiliser le résultat en Front Office et le tour est joué :)
Petite astuce: si vous voulez un résultat en json utiliser le lien http://localhost:8983/solr/suggest?q=e&wt=json
Pour des détails plus poussés tout se trouve sur la documentation Solr http://wiki.apache.org/solr/Suggester
Have fun.
Bonjour et bienvenue sur le Blog ! Vous atterissez sur une nouvelle version porté par le html5 et css3. Malheureusement pour les utilisateurs d'IE des bugs peuvent encore arriver. Mais n'hésitez pas à me les remonter par mail.
Très bonne visite et à bientôt !
Pas de nouveaux tweets...
Commentaires