2013-02-19 12 views
6

Ben Lucene yolumda çalışıyorum ve Hits nesnesi ile bu konuda güdük oldum. Ben bir Lucene.Net.Search kullanma var ama nedense VS12 Express Hits nesnesini bulamıyor, bu yüzden aşağıdaki derleme başarısız olur.Hits Nesne Lucene.Net 3.03'te kullanımdan kaldırıldı, nasıl değiştirilir?

derleyici tür veya ad alanı adı 'Hit' Hata 1 bulunamadı

(bir kullanarak yönergesi eksik size olan bu hat, aşağıdaki hata iletisi ile

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

şikayetçi veya bir montaj referansı?)

Bulamıyorum, aldığınız çevrimiçi eğitmenlere göre Al Lucnen. t.Search

herhangi bir görüntüle

// 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; 

cevap

15

I (Lucene.net 3.0.3 kullanımı ve ara) bir kaç özellikleri ve ScoreDoc elemanlarından oluşan bir dizi içeren bir TopDocs nesne, döner.

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"); 
} 
+0

Teşekkür: İşte bir exemple olduğunu! alanın tersine tüm belgeyi bir atışta geri almak için yine de var mı? – TheCodeNovice

+0

hattı ** Lucene.Net.Documents.Document doc = searcher.Doc (scoreDoc.Doc); ** bütün belge alınır. Sonra benim örnekte ben yaptığım gibi kendi alanlarını erişmek veya ** foreach gibi bir şey kullanarak içlerinden yineleme yapabilirsiniz (Lucene.Net.Documents.Field f doc.GetFields() olarak) {Console.WriteLine ("alanına =" + f.Name + ", value =" + f.StringValue)} ** – mbarthelemy

+0

mükemmel! Tekrar teşekkürler – TheCodeNovice