2012-06-15 12 views
7

Aktualnie integruję Apache Solr, przeszukując moją platformę i używając funkcji Suggester do autouzupełniania. Jednak moduł zausznika nie zwraca sugestie pisowni, tak więc na przykład, jeśli mogę szukać:Co zrobić, aby Solr Suggester zwrócił także sugestie pisowni

shi 

zausznika składanych deklaracji między innymi następujące elementy:

shirt 
shirts 

Jednakże, jeśli mogę szukać :

shrt 

Brak sugestii. Co chciałbym wiedzieć to:

a) Czy to nieprawidłowa konfiguracja modułu Suggester, który to spowodował? b) Czy moduł Suggester został zbudowany w taki sposób, że nie zwraca sugestii dotyczących pisowni? c) Jak mogę uzyskać moduł Suggester, aby również zwracał sugestie dotyczące pisowni, bez konieczności składania drugiego wniosku o propozycje korekty pisowni?

Przeczytałem dokumentację Solr, ale nie mogę tego zrobić.

Odpowiedz

7

Musisz skonfigurować składnik sprawdzania pisowni do generowania alternatywnych opcji ortograficzne jak opisano w http://wiki.apache.org/solr/SpellCheckComponent

składa się z następujących etapów zadania; - Zaktualizuj plik schema.xml w celu sprawdzenia pisowni, np. Możesz skopiować pola do nowego pola, powiedz "pisownia", np.

<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" /> 
  • Aktualizacja 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>

  • wskaźnik Re Corpus

  • Sugestie testowe dla np.

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

nadzieję, że pomoże.

+0

Dzięki za odpowiedź. Poprzednio użyłem komponentu sprawdzania pisowni na własną rękę, jednak jeśli wyniki zostaną znalezione dla zapytania wyszukiwania, komponent sprawdzania pisowni nie zwraca żadnych sugestii, dlatego zdecydowałem się użyć komponentu Suggester. Na przykład, jeśli mam wyniki dla wyszukiwanego terminu "arkusz", nadal oczekuję sugestii "arkusz", jeśli moje pole do sprawdzania zawiera taką możliwość. – newbie

+0

Witam Dude .. @Nitin Tripathi dla mnie działa dobrze, ale moje pytanie brzmi ... proszę spojrzeć na to http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr -server-in-a-php-zmienna – Naresh

+0

nie działa dla mnie –

Powiązane problemy