我使用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