C# 如何从Lucene.Net的索引文件中读取行

C# 如何从Lucene.Net的索引文件中读取行,c#,asp.net,.net,lucene,lucene.net,C#,Asp.net,.net,Lucene,Lucene.net,我正在使用Lunece.net 2.0.5版本。 我希望在ASP.NET web应用程序中以网格表格式打开和显示索引文件中的所有记录,并为该网格中的每个单元格提供编辑选项。 但我不知道如何从索引文件中读取每一行 我使用了下面的代码- private List<String> GetIndexTerms(string indexFolder) { List<String> termlist = new List<strin

我正在使用Lunece.net 2.0.5版本。 我希望在ASP.NET web应用程序中以网格表格式打开和显示索引文件中的所有记录,并为该网格中的每个单元格提供编辑选项。 但我不知道如何从索引文件中读取每一行

我使用了下面的代码-

   private List<String> GetIndexTerms(string indexFolder)
        {
            List<String> termlist = new List<string>();
            IndexReader reader = IndexReader.Open(indexFolder, false);
            TermEnum terms = reader.Terms();
            while (terms.Next())
            {
                Term term = terms.Term();
                String termText = term.Text();
                int frequency = reader.DocFreq(term);
                termlist.Add(termText);
            }
            reader.Close();
            return termlist;
        }
但它返回每个术语的列表,在这里我无法按每行记录聚合数据

让我知道是否有办法按每行读取文件,或者我需要更新我当前使用的Lucene版本


另外,请提供Lucene.net更好的文档网站的链接

您可以直接从索引中读取Lucene术语中的所有记录/行文档,而无需搜索

var reader =  IndexReader.Open(dir);
for (int i = 0; i < reader.MaxDoc(); i++)
{
    if (reader.IsDeleted(i)) continue;

    Document d =  reader.Document(i);
    var fieldValuePairs =  d.GetFields()
                            .Select(f => new { 
                                  Name = f.Name(), 
                                  Value = f.StringValue() })
                            .ToArray();
}

PS:v2.0.5非常古老。试试最新和最棒的

两个轴应该是什么?条款和文件?频率的值是多少?Lucene不是一个行和列数据库,不支持单个值的更新。你可能需要使用一个关系数据库。我在谷歌上为你搜索了这个-看。另一种方法可以是使用MatchAllDocsQuery,但随后您将获得所有文档ID的完整数组,并且在上面链接的文章中描述的方法中,您将获得一个枚举。哦,是的,按照其中一个回复的建议-使用maxDoc,而不是numDocs.Tass,我想要x轴上的所有字段和y轴上的每个文档记录谢谢你,Marko,我会尝试使用这个。