Как читать строки из индексных файлов Lucene.Net - PullRequest
2 голосов
/ 03 апреля 2012

Я использую версию Lunece.net 2.0.5. Я хочу открыть и отобразить все записи в индексном файле в виде таблицы (таблицы) в веб-приложении ASP.NET, а также предоставить возможность редактирования для каждой ячейки в этой таблице. Но я не знаю, как прочитать каждую строку из файла индекса.

Я использовал код ниже-

   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.

1 Ответ

4 голосов
/ 04 апреля 2012

Вы можете прочитать все записи / строки (document s в терминологии 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: версия 2.0.5 очень старая.попробуйте последние и лучшие Lucene.Net

...