2012-06-15 15 views
7

Actualmente estoy integrando Apache Solr buscando en mi plataforma y utilizando la funcionalidad de Suggester para la autocompletación. Sin embargo, el módulo Suggester no vuelve sugerencias de ortografía, así, así que por ejemplo si la búsqueda para:Cómo obtener que Solr Suggester devuelva sugerencias de ortografía también

shi 

El Suggester vuelve módulo entre otros los siguientes:

shirt 
shirts 

Sin embargo, si busco :

shrt 

No se devuelven sugerencias. Lo que me gustaría saber es:

a) ¿Es incorrecta la configuración del módulo Suggester que ha resultado en esto? b) ¿Está el módulo Suggester construido de tal manera que no devuelve sugerencias de ortografía? c) ¿Cómo puedo obtener el módulo Suggester para que también devuelva las sugerencias de ortografía sin tener que hacer una segunda solicitud de sugerencias de corrección ortográfica?

He leído la documentación de Solr pero parece que no puedo avanzar con esto.

Respuesta

7

Es necesario configurar el componente de corrección ortográfica para generar opciones de ortografía alternativos como se describe en http://wiki.apache.org/solr/SpellCheckComponent

El consta de los siguientes pasos de trabajo; - Actualice schema.xml para sugerencias ortográficas, como si desea copiar campos en un campo nuevo, digamos 'ortografía', por ej.

<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" /> 
  • actualización 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>

  • índice Re corpus

  • Sugerencias de prueba para p. Ej.

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

Espero que ayude.

+0

Gracias por su respuesta. Anteriormente utilicé el componente de revisión ortográfica, sin embargo, si se encuentran resultados para la consulta de búsqueda, el componente de revisión ortográfica no arroja ninguna sugerencia, por lo que decidí usar el componente Sugerencias. Por ejemplo, si tengo resultados para el término de búsqueda "hoja", aún esperaría ver una sugerencia de "hoja" si mi campo de ortografía contiene esa posibilidad. – newbie

+0

Hola amigo .. @Nitin Tripathi para mí hasta aquí funciona bien, pero mi pregunta es ... por favor eche un vistazo a este http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr -server-in-a-php-variable – Naresh

+0

no funcionó para mí –

Cuestiones relacionadas