Lucene.NET发芽问题

问题描述

| 我在Lucene.NET中使用snowballAnalyzer遇到问题。对于某些单词来说,它的效果很好,但是对于其他单词,它根本找不到任何结果,而且我不确定如何进一步对此进行深入研究以发现正在发生的事情。我正在测试对USDA食品描述文件搜索,该文件可在此处找到(http://www.ars.usda.gov/SP2UserFiles/Place/12354500/Data/SR23/asc/FOOD_DES.txt)。我正在使用英语词干算法。搜索\“鸡蛋\”时,我得到以下结果:
Bagels,egg
Bread,egg
Egg,whole,raw,fresh
Egg,white,yolk,frozen
Egg,cooked,fried
...
这些结果很棒。但是,搜索\“ apple \”时我什么也没有。当我使用StandardAnalyzer并搜索\“ apple \”时,得到以下结果。
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();
}
    

解决方法

        您确定使用ѭ3来编写索引吗?您必须使用相同的分析器来编写和查询索引。