Tôi đang làm việc theo cách của mình thông qua lucene và được stumped về vấn đề này với các đối tượng Hits. Tôi có một Lucene.Net.Search sử dụng nhưng đối với một số lý do VS12 Express không thể tìm thấy đối tượng Hits vì vậy sau đây không biên dịch.Số lần truy cập Đối tượng không được chấp nhận trong Lucene.Net 3.03, làm cách nào để thay thế nó?
Trình biên dịch phàn nàn về dòng này
Hits hits = searcher.Search(booleanQuery, hits_limit);
với thông báo lỗi sau
Lỗi 1 Loại hoặc namespace tên 'Hits' không thể được tìm thấy (là bạn thiếu một chỉ thị sử dụng hoặc một tham chiếu lắp ráp?)
Tôi không hiểu, theo hướng dẫn trực tuyến alk bạn cần là Lucnen.Ne t.Search
Bất kỳ Tư vấn
// 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;
Cảm ơn! là có anyway để có được toàn bộ tài liệu trở lại trong một shot như trái ngược với lĩnh vực của lĩnh vực? – TheCodeNovice
dòng ** Lucene.Net.Documents.Document doc = searcher.Doc (scoreDoc.Doc); ** tìm nạp toàn bộ tài liệu. Sau đó, bạn có thể truy cập các trường của nó giống như tôi đã làm trong ví dụ của tôi, hoặc lặp qua chúng bằng cách sử dụng một cái gì đó như ** foreach (Lucene.Net.Documents.Field f trong doc.GetFields()) {Console.WriteLine ("field =" + f.Name + ", value =" + f.StringValue)} ** – mbarthelemy
hoàn hảo! cảm ơn lần nữa – TheCodeNovice