2

作为 Lucene.Net/Lucene 和 C# 的新手,我能够输入几行代码并运行搜索。

现在我想取回找到的区域的片段。我找到了下面的代码,但 Visual Studio 一直告诉我 a)“Searcher 确实包含 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);
4

3 回答 3

0

这只是方法名称的问题。例如,它是 GetIndexReader(),而不是 getIndexReader()。您可能基于 Java 实现的文档。

于 2015-02-04T12:48:59.647 回答
0

在 Lucene.net 中,此方法的名称是 IndexReader。

于 2015-02-10T16:22:29.623 回答
0

我会拿出像 ILSpy 这样的东西来检查实际可用的方法。

于 2012-12-11T02:44:20.717 回答