2010-10-19 11 views
6

J'essaye de mettre en place spellchecker, selon solr documentation. Mais quand je teste, je n'ai aucune suggestion. Mon morceau de code suivant:Demander le handle solrconfig.xml Spellchecker

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 

    <str name="queryAnalyzerFieldType">textSpell</str> 

    <lst name="spellchecker"> 
     <str name="classname">solr.IndexBasedSpellChecker</str> 
     <str name="name">default</str> 
     <str name="field">name</str> 
     <str name="spellcheckIndexDir">./spellchecker</str> 
    </lst> 
    <str name="queryAnalyzerFieldType">textSpell</str> 

    </searchComponent> 


<requestHandler name="/spellcheck" class="solr.SearchHandler"> 
    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <!-- Optional, must match spell checker's name as defined above, defaults to "default" --> 
     <str name="spellcheck.dictionary">default</str> 
     <!-- omp = Only More Popular --> 
     <str name="spellcheck.onlyMorePopular">false</str> 
     <!-- exr = Extended Results --> 
     <str name="spellcheck.extendedResults">false</str> 
     <!-- The number of suggestions to return --> 
     <str name="spellcheck.count">1</str> 
    </lst> 
    <arr name="last-components"> 
     <str>spellcheck</str> 
    </arr> 
    </requestHandler> 

La requête que je transmets à Solr:
q =% 2B% 28text% 3A% 28gasal% 29% 29 & suggestField = contentOriginal & ontologySeed = GASAL & spellcheck.build = true & spellcheck.q = GASAL & & spellcheck = true spellcheck.collate = true & & hl = true hl.snippets = 5 & & hl.fl = text = text hl.fl & lignes = 12 & start = 0 & qt =% 2Fsuggestprobabili stic

Est-ce que quelqu'un sait pourquoi? Merci d'avance

+0

Votre configuration semble correcte. Pouvez-vous publier la requête que vous soumettez et les résultats attendus (c'est-à-dire, que contient votre dictionnaire)? –

+0

Je sais bsketball et je veux obtenir le basketball, par exemple –

+0

S'il vous plaît poster toute la requête et tous les paramètres que vous postez à Solr. Avez-vous un document dans votre index contenant le jeton «basketball» dans le champ textSpell? –

Répondre

17

D'abord, ne répétez pas queryAnalyzerFieldType deux fois dans la configuration des composants.

Il est recommandé de ne pas utiliser un gestionnaire /spellcheck mais au lieu de lier le composant de vérification orthographique au gestionnaire de requête standard (ou dismax si elle est ce que vous utilisez) comme ceci:

<requestHandler name="standard" class="solr.SearchHandler" default="true"> 
<lst name="defaults"> 
    ... 
</lst> 
<arr name="last-components"> 
    <str>spellcheck</str> 
    ...   
</arr> 
</requestHandler> 

Vous pouvez alors l'appeler comme ceci:
http://localhost:8983/solr/select?q=komputer&spellcheck=true

aussi ne pas oublier to build the spellcheck dictionary avant de l'utiliser:
http://localhost:8983/solr/select/?q=*:*&spellcheck=true&spellcheck.build=true

Vous pouvez forcer le dictionnaire à construire à chaque validation par la configuration dans le composant:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> 
<str name="queryAnalyzerFieldType">textSpell</str> 
<lst name="spellchecker"> 
    <str name="classname">solr.IndexBasedSpellChecker</str> 
    <str name="name">default</str> 
    <str name="field">name</str> 
    <str name="spellcheckIndexDir">./spellchecker1</str> 
    <str name="buildOnCommit">true</str> 
</lst> 
</searchComponent> 

Enfin, assurez-vous que votre champ name est vraiment un champ indexé de type textSpell et qu'il contient suffisamment de contenu pour construire un bon dictionnaire. Dans mon cas, j'ai un champ nommé spellchecker qui est rempli à partir de quelques champs de mon index (en utilisant les instructions copyField dans le schéma).

+0

Selon le dictionnaire, est-ce? sujet ou dois-je faire autre chose? –

+0

spellcheck.dictionary n'est pas une option de configuration mais un paramètre de requête pour indiquer quel dictionnaire utiliser lors de l'exécution. C'est utile si vous avez défini plus d'un dictionnaire. –

+0

Je ai construit avec succès le dictionnaire, mais quand je lance l'URL: http: // localhost: 8983/solr/select? Q = komputer & spellcheck = true je ne reçois aucune suggestion :( – Romi