6

私はluceneを処理していて、Hitsオブジェクトでこの問題に困惑しています。Using 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;
4

1 に答える 1

15

Lucene.net 3.0.3を使用すると、Search()はいくつかのプロパティと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");
}
于 2013-02-19T20:10:02.670 に答える