浏览 9601 次
锁定老帖子 主题:Lucene进阶:and 和or的条件查询
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-24
/** * 根据信息分类和关键词进行查询 * @param type,资源的类型,其值为news或product * @param searchKey,搜索的关键字 * @return Hits */ public Hits executeSearch(String type,String keyword) { Hits result = null; if(type != null && !type.equals("") && keyword != null && !keyword.equals("")) { try { //根据关键字构造一个数组 String[] key = new String[]{keyword,type}; //同时声明一个与之对应的字段数组 String[] fields = {"title","type"}; //声明BooleanClause.Occur[]数组,它表示多个条件之间的关系 BooleanClause.Occur[] flags=new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST}; ChineseAnalyzer analyzer = new ChineseAnalyzer(); //用MultiFieldQueryParser得到query对象 Query query = MultiFieldQueryParser.parse(key, fields, flags, analyzer); //c:/index表示我们的索引文件所在的目录 IndexSearcher searcher = new IndexSearcher("c:/index"); //查询结果 result = searcher.search(query); } catch (Exception e) { e.printStackTrace(); } } return result; } 这里需要注意的就是BooleanClause.Occur[]数组,它表示多个条件之间的关系,BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表示not,BooleanClause.Occur.SHOULD表示or. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-24
BooleanClause.Occur[] flags=new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};
2个 参数都是 BooleanClause.Occur.MUST 是什么 意思 是 && 这个意思 ???? |
|
返回顶楼 | |
发表时间:2008-09-23
说到AND OR问题,借楼主宝地,发个贴:
默认关键字分割是OR,如果转成AND,则为: parser.setDefaultOperator(QueryParser.AND_OPERATOR); 但是不知道为何,这样设置,什么都查不出来了,请问大家有没有遇到过这种情况 IndexSearcher is = new IndexSearcher(dir);//创建一个在指定文件目录上的IndexSearcher QueryParser parser = new QueryParser("content", new MMAnalyzer()); parser.setDefaultOperator(QueryParser.AND_OPERATOR); Query query = parser.parse("IRS_INFORMATION.CONTENT:救援 情况");//用QueryParser来parse查询字串,生成一个Query Hits hits = is.search(query);//Query去查找结果,结果以Hits的形式返回 |
|
返回顶楼 | |