c# – 点击对象在Lucene.Net 3.03中弃用,我该如何替换它?

前端之家收集整理的这篇文章主要介绍了c# – 点击对象在Lucene.Net 3.03中弃用,我该如何替换它?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在通过lucene工作,并在Hits对象上遇到了这个问题.我有一个使用Lucene.Net.Search但由于某种原因,VS12 Express无法找到Hits对象,因此以下无法编译.

编译器抱怨这一行

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

以下错误消息

Error 1 The type or namespace name ‘Hits’ could not be found (are you
missing a using directive or an assembly reference?)

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

任何建议

  1. // validation
  2. if (subqueries.Count == 0) return new List<MATS_Doc>();
  3. // set up lucene searcher
  4. Searcher searcher = new IndexSearcher(_directory,false);
  5. var hits_limit = 1000;
  6. var analyzer = new StandardAnalyzer(Version.LUCENE_30);
  7. BooleanQuery booleanQuery = new BooleanQuery();
  8. foreach (Query fieldQuery in subqueries)
  9. {
  10. booleanQuery.Add(fieldQuery,Occur.SHOULD);
  11. }
  12. //var parser = new QueryParser(Version.LUCENE_30,searchField,analyzer);
  13. //var query = _parseQuery(searchQuery,parser);
  14. Hits hits = searcher.Search(booleanQuery,hits_limit);
  15. IEnumerable<MATS_Doc> results = _mapLuceneSearchResultsToDataList(hits,searcher);
  16. analyzer.Close();
  17. searcher.Dispose();
  18. return results;

解决方法

我使用Lucene.net 3.0.3,而Search()返回一个TopDocs对象,该对象包含一些属性和一个scoreDoc元素数组.这是一个例子:
  1. Lucene.Net.Search.TopDocs results = searcher.Search(booleanQuery,null,hits_limit);
  2.  
  3.  
  4. foreach(scoreDoc scoreDoc in results.scoreDocs){
  5. // retrieve the document from the 'scoreDoc' object
  6. Lucene.Net.Documents.Document doc = searcher.Doc(scoreDoc.Doc);
  7. string myFieldValue = doc.get("myField");
  8. }

猜你在找的C#相关文章