命中对象在Lucene.Net 3.03中弃用,我该如何替换它?

时间:2013-02-19 19:56:02

标签: c# full-text-search lucene.net

我正在通过lucene工作,并在Hits对象上遇到了这个问题。我有一个使用Lucene.Net.Search但由于某种原因,VS12 Express无法找到Hits对象,因此以下无法编译。

编译器抱怨此行

Hits hits = searcher.Search(booleanQuery, hits_limit);

带有以下错误消息

  

错误1找不到类型或命名空间名称'Hits'(是吗?   缺少using指令或程序集引用?)

我不明白,根据你需要的在线教程,是Lucnen.Net.Search

任何建议

// validation
if (subqueries.Count == 0) return new List<MATS_Doc>();
// set up lucene searcher
Searcher searcher = new IndexSearcher(_directory, false);
var hits_limit = 1000;
var analyzer = new StandardAnalyzer(Version.LUCENE_30);
BooleanQuery booleanQuery = new BooleanQuery();
foreach (Query fieldQuery in subqueries)
{
    booleanQuery.Add(fieldQuery, Occur.SHOULD);
}
//var parser = new QueryParser(Version.LUCENE_30, searchField, analyzer);
//var query = _parseQuery(searchQuery, parser);
Hits hits = searcher.Search(booleanQuery, hits_limit);
IEnumerable<MATS_Doc> results = _mapLuceneSearchResultsToDataList(hits, searcher);
analyzer.Close();
searcher.Dispose();
return results;

1 个答案:

答案 0 :(得分:15)

我使用Lucene.net 3.0.3,而Search()返回一个 TopDocs 对象,其中包含一些属性和一个ScoreDoc元素数组。这是一个例子:

Lucene.Net.Search.TopDocs results = searcher.Search(booleanQuery, null, hits_limit);


foreach(ScoreDoc scoreDoc in results.ScoreDocs){
    // retrieve the document from the 'ScoreDoc' object
    Lucene.Net.Documents.Document doc = searcher.Doc(scoreDoc.Doc);
    string myFieldValue = doc.get("myField");
}