2012-06-15 2 views
7

J'intègre actuellement Apache Solr dans ma plateforme et j'utilise la fonctionnalité Suggester pour l'auto-complétion. Cependant, le module Suggester ne renvoie pas des suggestions d'orthographe ainsi, donc par exemple si je recherche:Comment faire pour que Solrais Suggester renvoie des suggestions d'orthographe

shi 

Le rendement du module Suggester entre autres les éléments suivants:

shirt 
shirts 

Cependant, si je cherche :

shrt 

Aucune suggestion n'est retournée. Ce que j'aimerais savoir:

a) La configuration du module Suggester est-elle incorrecte? b) Le module Suggester est-il construit de telle sorte qu'il ne renvoie pas de suggestions d'orthographe? c) Comment puis-je faire en sorte que le module Suggester renvoie des suggestions d'orthographe sans avoir à faire une seconde demande de correction orthographique?

J'ai lu la documentation de Solr mais je n'arrive pas à avancer dans ce sens.

Répondre

7

Vous devez configurer le composant de vérification orthographique pour générer d'autres options d'orthographe comme décrit à http://wiki.apache.org/solr/SpellCheckComponent

La tâche consiste des étapes suivantes; - Mettez à jour le fichier schema.xml pour la suggestion d'orthographe, comme si vous souhaitiez copier des champs dans un nouveau champ, par exemple "orthographe".

<copyField source="id" dest="spelling" /> 
<copyField source="name" dest="spelling" /> 
<copyField source="description" dest="spelling" /> 
<copyField source="longdescription" dest="spelling" /> 
<copyField source="category" dest="spelling" /> 
<copyField source="source" dest="spelling" /> 
<copyField source="merchant" dest="spelling" /> 
<copyField source="contact" dest="spelling" /> 
  • Mise à jour solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">defaultSearchField</str> <!-- spell check component configuration --> <str name="spellcheck">true</str> <str name="spellcheck.count">5</str> <str name="spellcheck.collate">true</str> <str name="spellcheck.maxCollationTries">5</str> </lst> <!-- add spell check processing after the default search component as configured above completed it's task --> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <lst name="spellchecker"> <!-- decide between dictionary based vs index based spelling suggestion, in most cases it makes sense to use index based spell checker as it only generates terms which are actually present in your search corpus --> <str name="classname">solr.IndexBasedSpellChecker</str> <!-- field to use --> <str name="field">spelling</str> <!-- buildOnCommit|buildOnOptimize --> <str name="buildOnCommit">true</str> <!-- $solr.solr.home/data/spellchecker--> <str name="spellcheckIndexDir">./spellchecker</str> <str name="accuracy">0.7</str> <float name="thresholdTokenFrequency">.0001</float> </lst> </searchComponent>

  • index Re corpus

  • Suggestions de test pour, par exemple,

    http: //:/Solr/select/q = coachin

    response { "responseHeader":{ "status":0, "QTime":12, "params":{ "indent":"true", "q":"coachin"}}, "response":{"numFound":0,"start":0,"docs":[] }, "spellcheck":{ "suggestions":[ "coachin",{ "numFound":1, "startOffset":0, "endOffset":7, "suggestion":["cochin"]}]}}

espoir qui aide.

+0

Merci pour votre réponse. J'ai précédemment utilisé le composant spellcheck seul, mais si des résultats sont trouvés pour la requête de recherche, le composant spellcheck ne renvoie aucune suggestion, d'où la raison pour laquelle j'ai décidé d'utiliser le composant Suggester. Par exemple, si j'ai des résultats pour le terme de recherche "feuille", je m'attendrais toujours à voir une suggestion "feuille" si mon champ d'orthographe contient cette possibilité. – newbie

+0

Salut Mec .. @Nitin Tripathi pour moi jusqu'à ici fonctionne très bien, mais ma question est ... s'il vous plaît jeter un oeil à ce http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr -server-in-a-php-variable – Naresh

+0

ne fonctionnait pas pour moi –

Questions connexes