利用Lucene.net實(shí)現(xiàn)站內(nèi)搜索功能,用輸入的關(guān)鍵字去匹配已生成索引文件中字段獲得的結(jié)果是符合要求的,但當(dāng)有選擇某一個(gè)種類型時(shí),卻把所有這種類型的數(shù)據(jù)都搜出來了,關(guān)鍵字似乎已經(jīng)不起作用了,求大蝦幫忙解決下。
“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); //游戲平臺(tái) } if (queryDictionary.ContainsKey("NavCategory")) { Query navQuery = new TermQuery(new Term("NavCategory", queryDictionary["NavCategory"])); bq.Add(navQuery, BooleanClause.Occur.MUST); //游戲產(chǎn)地 } if (queryDictionary.ContainsKey("GameEngine")) { Query engQuery = new TermQuery(new Term("GameEngine", queryDictionary["GameEngine"])); bq.Add(engQuery, BooleanClause.Occur.MUST); //游戲畫面 }
- 3 回答
- 0 關(guān)注
- 639 瀏覽
添加回答
舉報(bào)
0/150
提交
取消