2010-10-19 20 views
6

Ben solr documentation göre, imla kontrolü kurmak çalışıyorum. Ama test ettiğimde hiçbir fikrim yok. kod benim parçası aşağıdaki gibidir:talep kolu solrconfig.xml İmla

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

I Solr gönder sorgusu:
q =% 2B% 28text% 3A% 28gasal% 29% 29 & suggestField = contentOriginal & ontologySeed = gasal & spellcheck.build = Gerçek & spellcheck.q = gasal & imla = gerçek & spellcheck.collate = gerçek & hl = gerçek & hl.snippets = 5 & hl.fl = metin & hl.fl = metin & sıra = 12 & başlangıç ​​= 0 & qt =% 2Fsuggestprobabili stic

Neden olduğunu bilen var mı?

+0

Yapılandırmanız doğru görünüyor. Gönderdiğiniz sorguyu ve beklenen sonuçları (yani, sözlüğünüzde ne var) yayınlayabilir misiniz? –

+0

Ben bsketball girdim ve basketbol almak istiyorum, örneğin –

+0

Lütfen tüm sorguyu ve gönderdiğiniz tüm parametreleri Solr'a gönderin. Endeksinizde textSpell alanında "basketbol" simgesine sahip bir belge var mı? –

cevap

17

Birincisi, bileşen yapılandırmasında iki kez queryAnalyzerFieldType tekrarlamayın şimdiden teşekkür ederiz. (Bunu kullandığınız buysa ya dismax)

Böyle bir /spellcheck işleyicisi kullanmak yerine standart sorgu işleyicisi için yazım denetimi bileşeni bağlamak değil önerilir:

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

Daha sonra diyebilirsiniz böyle:
http://localhost:8983/solr/select?q=komputer&spellcheck=true

kullanmadan önce de to build the spellcheck dictionary unutma:
http://localhost:8983/solr/select/?q=*:*&spellcheck=true&spellcheck.build=true

Son olarak

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

sizin name alan türü textSpell içeren indisli alan gerçekten olduğundan emin olun ve inşa etmek yeterli içeriğe sahip olduğunu:

Sen bileşeninde bunu yapılandırarak her işlemek de inşa etmek sözlüğü zorlayabilir iyi bir sözlük. Benim durumumda, dizinimin bir çift alanından (şemadaki copyField komutlarını kullanarak) alınan spellchecker adlı bir alanım var.

+0

Sözlüğe kayıt, bu çok mu zor? konu veya başka bir şey yapmalı mıyım? –

+0

spellcheck.dictionary bir yapılandırma seçeneği değil, çalışma zamanında kullanılacak sözlüğü belirtmek için bir istek parametresidir. Birden fazla sözlük tanımladıysanız kullanışlıdır. –

+0

teh sözlüğünü oluşturmak başarıyla hav ama url çalıştırdığınızda: http: // localhost: 8983/Solr/seçmek q = komputer & yazım denetimi = i Her şey senin sözlüğünü oluşturmak belgeler bağlıdır herhangi bir öneri :( – Romi