作为 Lucene.Net/Lucene 和C#的新手,我能够输入一些代码行并运行搜索。
现在我想找回找到的区域的片段。我找到了下面的代码,但Visual Studio一直告诉我a)"搜索者确实包含getIndexReader的定义"和b)"ScoreDoc不包含doc的定义" - 我不明白问题所在!
有没有人可以帮忙。
我在Visual Studio 2010 Express上使用 Lucene.Net 3.0.3和Lucene Contrib 3.0.3。
请参阅我在下面的代码。
感谢您的帮助!
钢筋混凝土
IndexReader indexReader = IndexReader.Open(directory, true);
Searcher indexSearch = new IndexSearcher(indexReader);
var queryParser = new QueryParser(Version.LUCENE_30, "text", analyzer);
var query = queryParser.Parse(""system AKZ"~10");
Console.WriteLine("Searching for: " + query);
TopDocs hits = indexSearch.Search(query,500);
/// Highlighter
FastVectorHighlighter fvHighlighter = new FastVectorHighlighter(true, true);
for (int i = 0; i < hits.ScoreDocs.Length; i++)
{
string bestfragment fvHighlighter.GetBestFragment(fvHighlighter.GetFieldQuery(query),indexSearch.getIndexReader(), hits.ScoreDocs[i].doc, "text", 20);
MessageBox.Show(bestfragment);
}
Console.WriteLine("Results Found: " + hits.TotalHits);
拿出类似 ILSpy 的东西来检查实际可用的方法。
这只是方法名称大小写的问题。 例如,它是 GetIndexReader() 而不是 getIndexReader()。 您可能基于Java实现的文档。
Lucene.net 此方法的名称是IndexReader。