打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
lucene3.0 中BooleanQuery 的使用 | 亲亲宝宝
lucene3.0中BooleanQuery 实现与或的复合搜索 .
BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。必须包含,不能包含,可以包含三种.有以下6种组合: 
 
1.MUST和MUST:取得连个查询子句的交集。 
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。 
3.SHOULD与MUST_NOT:连用时,功能同MUST和MUST_NOT。
4.SHOULD与MUST连用时,结果为MUST子句的检索结果,但是SHOULD可影响排序。
5.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。
6.MUST_NOT和MUST_NOT:无意义,检索无结果。 
 

       private static void search(String str) throws Exception {

              IndexReader reader = IndexReader.open(FSDirectory.open(new File(

                            INDEX_DIR)), true); // only searching,

              // so read-only=true

              Searcher searcher = new IndexSearcher(reader);

              Analyzer analyzer = new IKAnalyzer();

              String field = "contents";

              QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,

                            analyzer);

              Query query = null;

              str = getKeyWord(str);

              query = parser.parse(str);

              BooleanQuery q = new BooleanQuery();

              q.add(query, BooleanClause.Occur.MUST);

              QueryParser parser2 = new QueryParser(Version.LUCENE_CURRENT, "keyword",  analyzer);

              Query q2 = parser2.parse(str);

//            q2.setBoost(10);

              q.add(q2, BooleanClause.Occur.SHOULD);

               TopScoreDocCollector collector = TopScoreDocCollector.create(10, false);

              searcher.search(q, collector);

              ScoreDoc[] hits = collector.topDocs().scoreDocs;

       }
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Lucene搜索方法总结 - Java综合 - Java - ITeye论坛
Lucene和ssh框架结合
lucene多种搜索方式详解例子
lucene、lucene.NET详细使用与优化详解
java搜索引擎lucene学习笔记 --水木尤寒的博客
跟我一起云计算(4)lucene
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服