C#Lucene获得所有索引

C#Lucene获得所有索引,c#,lucene,indexing,C#,Lucene,Indexing,我正在使用Lucene开发一个windows应用程序。我想得到所有的索引关键字,并使用它们作为一个搜索字段自动建议的来源。如何接收Lucene中的所有索引关键字?我是C#的新手。代码本身是值得赞赏的。谢谢。您想从索引中提取所有术语吗 private void GetIndexTerms(string indexFolder) { List<String> termlist = new ArrayList<String>(); IndexReader rea

我正在使用Lucene开发一个windows应用程序。我想得到所有的索引关键字,并使用它们作为一个搜索字段自动建议的来源。如何接收Lucene中的所有索引关键字?我是C#的新手。代码本身是值得赞赏的。谢谢。

您想从索引中提取所有术语吗

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();
}
private void GetIndexTerms(字符串indexFolder)
{
List termlist=newarraylist();
IndexReader=IndexReader.open(indexFolder);
TermEnum terms=reader.terms();
while(terms.next())
{
术语=术语。术语();
字符串termText=term.text();
int frequency=reader.docFreq(术语);
termlist.add(termText);
}
reader.close();
}
要获得4.8版的灵感,可以看看GitHub。使用类:SearcherManager*QueryParserIndexWriter作为构建索引

//您最喜欢的查询解析器(例如多字段查询解析器)
_queryParser=新的多字段queryParser(。。。
//使用新的indexSearcher执行搜索
_searchManager.MaybeRefreshBlocking();
var searcher=_searchManager.Acquire();
尝试
{
var q=_queryParser.Parse(查询);
var topDocs=searcher.Search(q,10);
foreach(topDocs.ScoreDocs中的var scoreDoc)
{
var document=searcher.Doc(scoreDoc.Doc);
var hit=newqueryhit
{
Title=document.GetField(“Title”)?.GetStringValue(),
//…您需要从索引中读取数据的逻辑。。。
};
}
}
最后
{
_searchManager.Release(搜索者);
searcher=null;
}

这非常有帮助。谢谢。