2012-06-15 13 views
7

Şu anda Apache Solr aramasını platforma entegre etme ve otomatik tamamlama için Suggester işlevini kullanıyorum. Aşağıdaki diğerleri arasındaSolr Suggester'in yazım önerilerini geri döndürmesi nasıl sağlanır?

shi 

suggester modülü dönüşleri: Ancak

shirt 
shirts 

arama yaparsam, örneğin arama yaparsam Bununla birlikte, suggester modülü, hem de yazım önerileri dönmez :

shrt 

Hiçbir öneri iade edilmedi. Bilmek istediklerim:

a) Suggester modülünün yanlış yapılandırması bununla sonuçlandı mı? b) Suggester modülü, yazım önerilerine dönmeyecek şekilde oluşturuldu mu? c) Suggester modülünü, yazım önerileri için ikinci bir istekte bulunmak zorunda kalmadan, yazım önerilerini de iletmeye nasıl başlarım?

Solr belgelerini okudum, ancak bununla birlikte bir yol yapamıyorum. http://wiki.apache.org/solr/SpellCheckComponent

adımları aşağıdaki gibidir görev de açıklandığı gibi

cevap

7

Sen alternatif yazım seçeneklerini oluşturmak için yazım denetimi bileşeni yapılandırmanız gerekir; - Yazım önerisi için şema.xml dosyasını güncelleyin. Örneğin, alanları "ör." Yazarak yeni bir alana kopyalamak isteyebilirsiniz.

<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" /> 
  • Güncelleme 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>

  • Re endeksi korpus

  • Test önerileri, ör.

    http: //:/Solr/select/q = yardımcı olur

    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"]}]}}

Umut coachin.

+0

Cevabınız için teşekkür ederiz. Daha önce yazım denetimi bileşenini kendi başıma kullandım, ancak arama sorgusu için sonuçlar bulunursa, yazım denetimi bileşeni hiçbir öneride bulunmaz, dolayısıyla Suggester bileşenini kullanmaya karar verdim. Örneğin, "sayfa" arama terimi için sonuçlarım varsa, yazım alanım bu olasılığı içeriyorsa yine de bir "öneri" öneri görmeyi beklerdim. – newbie

+0

Merhaba Dude .. @Nitin Tripathi benim için iyi çalışıyor ama benim sorum şu ki ... lütfen bir göz atın http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr -server-in-a-php-variable – Naresh

+0

benim için çalışmadı –