利用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); //游戲畫面 }
- 3 回答
- 0 關注
- 656 瀏覽
添加回答
舉報
0/150
提交
取消
