C# lucene 2.9.2.2一个非常奇怪的问题,无法搜索关键字“quot;“a”;,另一个可以

C# lucene 2.9.2.2一个非常奇怪的问题,无法搜索关键字“quot;“a”;,另一个可以,c#,lucene.net,C#,Lucene.net,添加索引代码: public class IndexManage { public static void AddIndex(List<QuestionItem> itemList) { Analyzer analyzer =new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29); Lucene.Net.Store.FSDirectory fs = Lucene.Net.Store

添加索引代码:

public class IndexManage
{
    public static void AddIndex(List<QuestionItem> itemList)
    {
        Analyzer analyzer =new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29);
        Lucene.Net.Store.FSDirectory fs = Lucene.Net.Store.FSDirectory.Open(new DirectoryInfo("IndexDirectory"));
        IndexWriter writer =new IndexWriter(fs, analyzer,true,IndexWriter.MaxFieldLength.UNLIMITED);
        foreach (var item in itemList)
        {
            AddDocument(writer, item);
        }
        writer.Commit();
        writer.Optimize();
        writer.Close();
    }

    private static void AddDocument(IndexWriter writer, QuestionItem item)
    {
        Document document =new Document();
        document.Add(new Field("qid", item.QID.ToString(), Field.Store.YES, Field.Index.ANALYZED));
        document.Add(new Field("title", item.Title, Field.Store.YES,Field.Index.ANALYZED));
        document.Add(new Field("content", item.Content, Field.Store.YES, Field.Index.ANALYZED));
        document.Add(new Field("supply", item.Supply, Field.Store.YES, Field.Index.ANALYZED));
        writer.AddDocument(document);
    }
}
测试代码为:

public static void Show()
{
    AddIndex();
    List<QuestionItem> itemList = SearchManage.Search("a");
    Console.WriteLine("search result:");
    foreach (var item in itemList)
    {
        Console.WriteLine(item.QID +""+ item.Title +""+ item.Content +""+ item.Supply);
    }
}

private static void AddIndex()
{
    List<QuestionItem> itemList =new List<QuestionItem>() {
        new QuestionItem(){QID=1,Title="a",Content="ab",Supply="abc"},
        new QuestionItem(){QID=2,Title="b",Content="a",Supply="fds a"},
        new QuestionItem(){QID=3,Title="c",Content="c defg",Supply="as dfg hjk"},
        new QuestionItem(){QID=4,Title="d",Content="def a b",Supply="kjhgf ds a"},
        new QuestionItem(){QID=5,Title="e",Content="ef ab c",Supply="a sdf g hjkl"}
    };
    IndexManage.AddIndex(itemList);
}
publicstaticvoidshow()
{
AddIndex();
List itemList=SearchManage.Search(“a”);
Console.WriteLine(“搜索结果:”);
foreach(itemList中的变量项)
{
Console.WriteLine(item.QID+“”+item.Title+“”+item.Content+“”+item.Supply);
}
}
私有静态void AddIndex()
{
List itemList=新列表(){
新问题项(){QID=1,Title=“a”,Content=“ab”,Supply=“abc”},
新问题项(){QID=2,Title=“b”,Content=“a”,Supply=“fds a”},
新问题项(){QID=3,Title=“c”,Content=“c defg”,Supply=“as dfg hjk”},
新问题项(){QID=4,Title=“d”,Content=“def a b”,Supply=“kjhgf ds a”},
新问题项(){QID=5,Title=“e”,Content=“ef ab c”,Supply=“a sdf g hjkl”}
};
IndexManager.AddIndex(项目列表);
}
现在的问题是:
搜索“a”,没有结果,但对于“ab”、“b”、“c”有结果,这是一个非常奇怪的问题,谁能帮我?

StandardAnalyzer使用默认停止词列表,其中一个是“a”。如果不需要停止字,可以使用具有空集的构造函数作为第二个参数:

Analyzer ana = new StandardAnalyzer(LUCENE_30, Collections.emptySet());
或者像这样在.net中:

Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29, new Hashtable());

Analyzer Analyzer=new StandardAnalyzer(Lucene.Net.Util.Version.Lucene_29,new Hashtable());
Analyzer ana = new StandardAnalyzer(LUCENE_30, Collections.emptySet());
Analyzer analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29, new Hashtable());