我使用Lucene.NET 3.0.3來搜索兩個字段(我有兩個字段名爲「Noidung」,「Dapa」),我在C#中使用BooleanQuery
來做到這一點,但是當我運行這個代碼沒有任何結果返回,我敢肯定沒有任何錯誤的源搜索,因爲我測試了它。那麼使用Lucene.NET 3.0.3的人可以提供一些解釋嗎?爲什麼Lucene.NET 3.0.3中的BooleanQuery不返回任何內容?
IndexReader indexreader = IndexReader.Open(directory, true);
Searcher indexsearch = new IndexSearcher(indexreader);
BooleanQuery bq = new BooleanQuery();
Query q1 = new TermQuery(new Term("Noidung", PhanSoSanh));
Query q2 = new TermQuery(new Term("Dapa", txtText.Text.ToString().Trim()));
bq.Add(q1, Occur.MUST);
bq.Add(q2, Occur.MUST);
TopDocs ketqua = indexsearch.Search(bq, null, 500);
var hits = ketqua.ScoreDocs;
foreach (var hit in hits)
{
// Return result
}
我有2個場中的索引( 「Noidung」, 「DAPA」)。現在我想在「Noidung」字段進行搜索,然後用「Dapa」搜索結果。我使用booleanQuery但沒有返回結果?幫我?
您創建術語查詢的方式表明您將進行完全匹配,既涉及套管和標記化。您是否使用KeywordAnalyzer編制文檔索引? PhanSoSanh和txtText.Text的值是什麼?你爲什麼不使用QueryParser? – sisve 2013-03-16 15:43:00
PhanSoSanh和txtText.text是我在文本框中搜索的字符串。索引是好的!因爲我使用QueryParser在一個字段中搜索時,我索引沒問題。但是現在我必須在2個數據索引中的2個字段中搜索不同的數據。並且你看到 – Nam 2013-03-16 16:22:46