Tengo un problema con el SnowBallAnalyzer en Lucene.NET. Funciona muy bien para algunas palabras, pero otras no encuentra ningún resultado, y no estoy seguro de cómo profundizar más en esto para descubrir qué está sucediendo. Estoy probando la búsqueda en el archivo de descripción de alimentos del USDA que se puede encontrar aquí (http://www.ars.usda.gov/SP2UserFiles/Place/12354500/Data/SR23/asc/FOOD_DES.txt). Estoy usando el algoritmo de derivación inglés. Obtengo los siguientes resultados cuando busco "huevos":Lucene.NET problema de origen
Bagels, egg
Bread, egg
Egg, whole, raw, fresh
Egg, white, raw, fresh
Egg, yolk, raw, fresh
Egg, yolk, raw, frozen
Egg, whole, cooked, fried
...
Esos resultados son geniales. Sin embargo, no obtengo ningún resultado cuando busco "apple". Cuando uso el StandardAnalyzer y busco "apple" obtengo los siguientes resultados.
Croissants, apple
Strudel, apple,
Babyfood, juice, apple
Babyfood, apple-banana juice
...
No son los mejores resultados, pero al menos muestran algo. ¿Alguien sabe por qué el analizador de fugas se estaría filtrando de tal manera que no obtendría ningún resultado?
Editar: Aquí está el prototipo de código con el que estoy trabajando.
static string[] Search(string searchTerm)
{
//Lucene.Net.Analysis.Analyzer analyzer = new Lucene.Net.Analysis.Snowball.SnowballAnalyzer("English");
Lucene.Net.Analysis.Analyzer analyzer = new Lucene.Net.Analysis.Standard.StandardAnalyzer();
Lucene.Net.QueryParsers.QueryParser parser = new Lucene.Net.QueryParsers.QueryParser(Lucene.Net.Util.Version.LUCENE_29, "text", analyzer);
Lucene.Net.Search.Query query = parser.Parse(searchTerm);
Lucene.Net.Search.Searcher searcher = new Lucene.Net.Search.IndexSearcher(Lucene.Net.Store.FSDirectory.Open(new DirectoryInfo("./index/")), true);
var topDocs = searcher.Search(query, null, 10);
List<string> results = new List<string>();
foreach(var scoreDoc in topDocs.scoreDocs)
{
results.Add(searcher.Doc(scoreDoc.doc).Get("raw"));
}
return results.ToArray();
}
Esto es probablemente. Confirmaré y luego aceptaré. ¡Gracias! –