C # Lucene получить все индексы - PullRequest
6 голосов
/ 23 мая 2010

Я работаю над приложением Windows, используя Lucene. Я хочу получить все проиндексированные ключевые слова и использовать их в качестве источника для автоматического предложения в поле поиска. Как я могу получить все проиндексированные ключевые слова в Lucene? Я довольно новый в C #. Сам код ценится. Спасибо.

Ответы [ 2 ]

11 голосов
/ 25 мая 2010

Вы хотите извлечь все термины из индекса?

private void GetIndexTerms(string indexFolder)
{
    List<String> termlist = new ArrayList<String>();
    IndexReader reader = IndexReader.open(indexFolder);
    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();
}
0 голосов
/ 24 января 2019

Для вдохновения с Apache Lucene.Net версии 4.8 вы можете посмотреть GitHub msigut / LuceneNet48Demo . Используйте классы: SearcherManager , * QueryParser и IndexWriter для индекса сборки.

    // you favorite Query parser (MultiFieldQueryParser for example)
    _queryParser = new MultiFieldQueryParser(...

    // Execute the search with a fresh indexSearcher
    _searchManager.MaybeRefreshBlocking();

    var searcher = _searchManager.Acquire();
    try
    {
        var q = _queryParser.Parse(query);

        var topDocs = searcher.Search(q, 10);

        foreach (var scoreDoc in topDocs.ScoreDocs)
        {
            var document = searcher.Doc(scoreDoc.Doc);

            var hit = new QueryHit
            {
                Title = document.GetField("title")?.GetStringValue(),

                // ... you logic to read data from index ...
            };
        }
    }
    finally
    {
        _searchManager.Release(searcher);
        searcher = null;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...