如何在 lucene.net 中清空布尔查询对象
本文关键字:清空 布尔 查询 对象 net lucene | 更新日期: 2023-09-27 18:21:34
int length3 = CheckBoxList4.Items.Count;
int count = 0;
for (int i = 0; i < length3; i++)
{
BooleanQuery finalQuery1 = new BooleanQuery();
finalQuery1 = (BooleanQuery)Session["Luc_Query"];
var query1 = new QueryParser("Industry", analyzer).Parse(CheckBoxList4.Items[i].Text);
finalQuery1.Add(query1, BooleanClause.Occur.MUST);
hits = searcher.Search(finalQuery1);
count = hits.Length();
CheckBoxList4.Items[i].Text = CheckBoxList4.Items[i].Text +" " +count.ToString() ;
}
我试图清空 finalQuery1,但它重复了这个query(finalQuery1.Add(query1, BooleanClause.Occur.MUST);)
的附加值.我用来清空布尔查询的方法在下面,但它仍然不起作用。
finalQuery1 = (BooleanQuery)null;
finalQuery1=null;
我假设您不想修改存储在Session["Luc_Query"]
中的查询,只需在每次循环迭代中对其进行未修改即可。
您的代码不起作用,因为您在循环的每次迭代中都会修改查询的同一实例。您需要对原始查询的副本进行更改,而不是更改原始查询。
尝试以下代码:
int length3 = CheckBoxList4.Items.Count;
int count = 0;
for (int i = 0; i < length3; i++)
{
BooleanQuery finalQuery1 = (BooleanQuery)Session["Luc_Query"];
finalQuery1 = (BooleanQuery)finalQuery1.Clone();
var query1 = new QueryParser("Industry", analyzer).Parse(CheckBoxList4.Items[i].Text);
finalQuery1.Add(query1, BooleanClause.Occur.MUST);
hits = searcher.Search(finalQuery1);
count = hits.Length();
CheckBoxList4.Items[i].Text = CheckBoxList4.Items[i].Text + " " + count.ToString() ;
}