2013-02-19 6 views
6

私はluceneを通して自分のやり方を進めており、Hitsオブジェクトを使ってこの問題に困惑しています。 Using Lucene.Net.Searchを持っていますが、何らかの理由でVS12 ExpressがHitsオブジェクトを見つけられず、次のコンパイルに失敗します。Hits Object Lucene.Net 3.03で廃止されました。どのように置き換えるのですか?

コンパイラは次のエラーメッセージ型または名前空間名「ヒット」1

エラーが見つかりませんでしたと、このライン

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

(文句を言うあなた は、usingディレクティブが欠落していますまたはアセンブリ参照?)

オンラインチュートリアルで必要なのはLucnen.Neです私はLucene.net 3.0.3、および検索を(使用t.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; 

答えて

15

)いくつかのプロパティとScoreDoc要素のアレイを含んTopDocsオブジェクトを返します。ここに例があります:

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

ありがとうございます!フィールドごとに1つのショットで全体の文書を戻すことはとにかくありますか? – TheCodeNovice

+0

行** Lucene.Net.Documents.Document doc = searcher.Doc(scoreDoc.Doc); **ドキュメント全体を取得します。私の例のようにフィールドにアクセスしたり、** foreach(Lucene.Net.Documents.Field f in doc.GetFields()){Console.WriteLine( "field =" + f.Name + "、value =" + f.StringValue)} ** – mbarthelemy

+0

完璧!再度、感謝します – TheCodeNovice

関連する問題