2017-05-17 5 views
0

J'utilise solr 3.6. (désolé de le dire!) et avoir du mal à implémenter autosuggest et spellcheck simultanément. J'utilise Suggester pour autosuggest et je ne veux pas utiliser IndexBasedSpellChecker pour la vérification orthographique. Est-il possible de configurer autosuggest et spellcheck dans un gestionnaire de requêtes unique?Solr Autosuggest & Spell check

Par exemple: si je recherche pour « Blan », suggère solr « couverture » et obtenir des résultats de recherche. Cependant si je tape 'blantet' ou 'blanpet', j'obtiens 0 résultats et aucune suggestion ou correction d'orthographe. J'ai juste besoin d'une correction orthographique de 'blantet' à 'couverture' pour que je puisse montrer 'Vouliez-vous dire?' sur ma page.

En utilisant l'analyseur standard.

Merci d'avance.

+0

Postez vos définitions de configuration de Solr pour les composants et autosuggestion. SpellCheck –

Répondre

0

ne suis pas sûr de la version 3.6, mais les configurations suivantes qui travaillent pour moi sur la version supérieure 6.

Solr-config.xml:

<searchComponent name="spellchecktest" class="solr.SpellCheckComponent"> 
    <str name="queryAnalyzerFieldType">text</str> 
    <lst name="spellchecker"> 
    <str name="name">default</str> 
    <str name="field">name</str> 
    <str name="classname">solr.DirectSolrSpellChecker</str> 
    <str name="distanceMeasure">internal</str> 
    <float name="accuracy">0.5</float> 
    <str name="payloadField">address</str> 
    </lst> 

    <lst name="spellchecker"> 
    <str name="name">wordbreak</str> 
    <str name="classname">solr.WordBreakSolrSpellChecker</str> 
    <str name="field">name</str> 
    <str name="combineWords">true</str> 
    <str name="breakWords">true</str> 
    <int name="maxChanges">10</int> 
    <int name="minBreakLength">2</int> 
    </lst> 
</searchComponent> 

<requestHandler name="/selectCheck" class="solr.SearchHandler"> 

    <lst name="defaults"> 
     <str name="echoParams">explicit</str> 
     <int name="rows">10</int> 
     <str name="df">name</str> 
     <str name="spellcheck">on</str>       
     <str name="spellcheck.extendedResults">false</str>   
     <str name="spellcheck.count">5</str>      
     <str name="spellcheck.alternativeTermCount">2</str>  
     <str name="spellcheck.maxResultsForSuggest">5</str>  
     <str name="spellcheck.collate">true</str>     
     <str name="spellcheck.collateExtendedResults">true</str> 
     <str name="spellcheck.maxCollationTries">5</str>   
     <str name="spellcheck.maxCollations">3</str>  
    </lst> 
    <arr name="last-components"> 
    <str>spellchecktest</str>    
    </arr> 

    </requestHandler> 

Schema.xml

<field name="name" type="text" indexed="true" stored="true" multiValued="false"/> 
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 

     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 

     </analyzer> 
    </fieldType> 

solr locale exemple d'exemple: Lettre n est manquante dans davider requête:

http://localhost:8983/solr/basic/selectCheck?q=davider

<response> 
    <lst name="responseHeader"> 
     <int name="status">0</int> 
     <int name="QTime">40</int> 
     <lst name="params"> 
     <str name="q">davider</str> 
     </lst> 
    </lst> 
    <result name="response" numFound="0" start="0" /> 
    <lst name="spellcheck"> 
     <lst name="suggestions"> 
     <lst name="davider"> 
      <int name="numFound">1</int> 
      <int name="startOffset">0</int> 
      <int name="endOffset">7</int> 
      <arr name="suggestion"> 
       <str>davinder</str> 
      </arr> 
     </lst> 
     </lst> 
     <lst name="collations"> 
     <lst name="collation"> 
      <str name="collationQuery">davinder</str> 
      <int name="hits">1</int> 
      <lst name="misspellingsAndCorrections"> 
       <str name="davider">davinder</str> 
      </lst> 
     </lst> 
     </lst> 
    </lst> 
</response>