Lucene.Net多条件作‘and’和'or'查询

利用Lucene.net实现站内搜索功能,用输入的关键字去匹配已生成索引文件中字段获得的结果是符合要求的,但当有选择某一个种类型时,却把所有这种类型的数据都搜出来了,关键字似乎已经不起作用了,求大虾帮忙解决下。

“and”、“or”条件查询的主要代码如下:

BooleanQuery bq = new BooleanQuery();
QueryParser cnParser
= new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "GameCnName", analyzer);
Query cnQuery
= cnParser.Parse(keyword);
bq.Add(cnQuery, BooleanClause.Occur.SHOULD);
//游戏中文名
QueryParser enQueryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "GameEnName", analyzer);
Query enQuery
= enQueryParser.Parse(keyword);
bq.Add(enQuery, BooleanClause.Occur.SHOULD);
//游戏英文名
QueryParser companyQueryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "CompanyName", analyzer);
Query companyQuery
= companyQueryParser.Parse(keyword);
bq.Add(companyQuery, BooleanClause.Occur.SHOULD);
//游戏公司名
if (queryDictionary.ContainsKey("GamePlatform"))
{
Query pfQuery
= new TermQuery(new Term("GamePlatform", queryDictionary["GamePlatform"]));
bq.Add(pfQuery, BooleanClause.Occur.MUST);
//游戏平台
}
if (queryDictionary.ContainsKey("NavCategory"))
{
Query navQuery
= new TermQuery(new Term("NavCategory", queryDictionary["NavCategory"]));
bq.Add(navQuery, BooleanClause.Occur.MUST);
//游戏产地
}
if (queryDictionary.ContainsKey("GameEngine"))
{
Query engQuery
= new TermQuery(new Term("GameEngine", queryDictionary["GameEngine"]));
bq.Add(engQuery, BooleanClause.Occur.MUST);
//游戏画面
}
ABOUTYOU
浏览 606回答 3
3回答

一只甜甜圈

Must 和 Should 在一起 是取得Must结果的倒排序结果 如果文档包含Should的结果,则增加打分。 Must和Must在一起取交集。 Should和Should一起取并集。

米琪卡哇伊

这是全部代码吗?
打开App,查看更多内容
随时随地看视频慕课网APP