2009-12-21 9 views
9

estoy usando Porter Stemmer para contener las palabras, y aquí hay un problema que estoy corriendo en:Zend con la palabra "hipoteca"

palabra "hipoteca" está provino correctamente a "mortgag" Palabra "acreedor" es (posiblemente de forma incorrecta) se debió a la "hipoteca"

hay aproximadamente 100 documentos con la palabra "hipoteca" Hay 1 documento con la palabra "acreedor"

Cuando construyo un índice sin poner " acreedor hipotecario "en cualquier documento, todo funciona bien: buscando" hipoteca "o" hipotecas "o" mor tgag "devuelve los 100 documentos.

Cuando construyo un índice y uno de los documentos contiene "acreedor hipotecario", al buscar en el índice "hipoteca" solo se devuelve un solo documento con "acreedor hipotecario" (que se redujo a "hipoteca"). Sin embargo, la búsqueda de "hipotecas" o "hipotecas" devuelve los 100 documentos.

La única conclusión lógica que puedo sacar de este problema es que primero lucene busca la palabra pretendida, y si no encuentra ningún resultado, continúa buscando la palabra derivada. Por lo tanto, al buscar 'hipoteca', primero encuentra la 'hipoteca' derivada de 'acreedor hipotecario' y deja de buscar. ¿Es este el comportamiento correcto o es un error?

Respuesta

1

Esto suena como un error para mí. Un principio rector de la búsqueda de Lucene dice: "Busca utilizando el mismo analizador que usaste para indexar, a menos que tengas una buena razón real para no hacerlo". Después del análisis y la derivación, Lucene debería devolver coincidencias para los términos de búsqueda que tiene.

En su caso, "hipoteca" se transformó en "hipoteca" durante la indexación. El proceso de recuperación debe reflejar eso, y también transformar "hipoteca" en "hipoteca", y luego encontrar las coincidencias para "hipoteca" (que representan "hipoteca").

Parece que durante la recuperación no se deriva la consulta, lo que conduce a resultados erróneos. Si esta respuesta no está clara, edite su pregunta y agregue unas líneas de código que describan cómo crea el índice y cómo lo busca.