Проблема с остановкой Lucene.NET

У меня возникла проблема с использованием SnowBallAnalyzer в Lucene.NET. Он отлично работает для некоторых слов, но для других он вообще не дает никаких результатов, и я не уверен, как вникать в это дальше, чтобы узнать, что происходит. Я тестирую поиск в файле описания продуктов питания Министерства сельского хозяйства США, который можно найти здесь (http://www.ars.usda.gov/SP2UserFiles/Place/12354500/Data/SR23/asc/FOOD_DES.txt). Я использую английский алгоритм стемминга. При поиске по запросу "яйца" я получаю следующие результаты:

Bagels, egg
Bread, egg
Egg, whole, raw, fresh
Egg, white, raw, fresh
Egg, yolk, raw, fresh
Egg, yolk, raw, frozen
Egg, whole, cooked, fried
...

Отличные результаты. Однако я не получаю результатов при поиске слова «яблоко». Когда я использую StandardAnalyzer и ищу «яблоко», я получаю следующие результаты:

Croissants, apple
Strudel, apple,
Babyfood, juice, apple
Babyfood, apple-banana juice
...

Не самые лучшие результаты, но, по крайней мере, он что-то показывает.Кто-нибудь знает, почему анализатор стемминга будет фильтровать таким образом, что я не получу никаких результатов?

Редактировать: Вот мой код прототипа, с которым я работаю.

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();
}
5
задан Timothy Strimple 31 May 2011 в 19:03
поделиться