Query的子类查询

PS:这是通用代码,下面的子类查询调用到的时候就不再写这部分的具体的实现过程了

    /*** 构造IndexSearcher对象** @return* @throws Exception*/private IndexSearcher getIndexSearcher() throws Exception {/*创建一个Directory对象,指定索引库的位置*/Directory directory = FSDirectory.open(new File("E:\\zhanghaoBF\\luceneSolr\\indexLibrary").toPath());//磁盘(硬盘)上的路径/*创建一个IndexReader(索引读取)对象*/IndexReader indexReader = DirectoryReader.open(directory);//打开索引库(此对象为流对象)/*创建一个IndexSearcher(索引搜索)对象*/IndexSearcher indexSearcher = new IndexSearcher(indexReader);return indexSearcher;//索引对象
    }/*** 执行查询并打印结果** @param query* @param indexSearcher* @throws Exception*/private void printResult(Query query, IndexSearcher indexSearcher) throws Exception {/*执行查询*/TopDocs topDocs = indexSearcher.search(query, 10);//根据query搜索,返回评分最高的10条/*返回查询结果,遍历查询结果并输出*/ScoreDoc[] scoreDocs = topDocs.scoreDocs;//PS:注意这里返回的是文档id的数组for (ScoreDoc scoreDoc : scoreDocs) {int docId = scoreDoc.doc;//文档IDDocument document = indexSearcher.doc(docId);//对应的文档
String fileName = document.get("fileName");//文件名称
            System.out.println(fileName);String fileSize = document.get("fileSize");//文件大小
            System.out.println(fileSize);String filePath = document.get("filePath");//文件路径
            System.out.println(filePath);System.out.println("----------华丽的分割线----------");}}

View Code

MatchAllDocsQuery

MatchAllDocsQuery子类查询方法的作用是查询索引目录下的所有文档id数组。

    /*** 查询索引目录下的所有文档** @throws Exception*/@Testpublic void testMatchAllDocsQuery() throws Exception {//获取IndexSearcher(索引搜索)对象IndexSearcher indexSearcher = getIndexSearcher();//新建查询子类对象Query query = new MatchAllDocsQuery();//执行查询并打印结果
        printResult(query, indexSearcher);}

TermQuery

TermQuery子类查询方法的作用是对指定的域关键词进行精准查询

    /*** 对指定的域和关键词进行精准查询** @throws Exception*/@Testpublic void testTermQuery() throws Exception {//获取IndexSearcher(索引搜索)对象IndexSearcher indexSearcher = getIndexSearcher();//构造查询条件Term condition = new Term("fileContent", "lucene");//新建查询子类对象Query query = new TermQuery(condition);//执行查询并打印结果
        printResult(query, indexSearcher);}

LongPoint.newRangeQuery(老版本用的NumericRangQuery)

LongPoint.newRangeQuery子类查询方法的作用是查询域长度在指定范围内的文档id数组。

    /*** 根据数值范围查询** @throws Exception*/@Testpublic void testNumericRangQuery() throws Exception {//获取IndexSearcher(索引搜索)对象IndexSearcher indexSearcher = getIndexSearcher();//新建查询子类对象(老版本用的是NumericRangQuery)Query query = LongPoint.newRangeQuery("fileSize", 1L, 200L);//查询长度在1-200之间的索引文档id数组//执行查询并打印结果
        printResult(query, indexSearcher);}

BooleanQuery.Builder(老版本不用指定builder,可以直接new出BooleanQuery对象后直接添加query条件)

BooleanQuery.Builder子类查询方法的作用是组合条件查询(多条件查询)。

 /*** 组合查询(多条件查询)** BooleanClause.Occur.MUST(必须满足此条件)【相当于sql中的and】* BooleanClause.Occur.SHOULD(可以满足也可以不满足)【相当于sql中的or】* BooleanClause.Occur.MUST_NOT(必须不满足此条件)【相当于sql中的not】** @throws Exception*/@Testpublic void testBooleanQuery() throws Exception {//获取IndexSearcher(索引搜索)对象IndexSearcher indexSearcher = getIndexSearcher();//构造查询条件Query query1 = new TermQuery(new Term("fileName", "lucene"));Query query2 = new TermQuery(new Term("fileContent", "lucene"));//新建查询子类对象(老版本不用指定builder,可以直接new出BooleanQuery对象后直接添加query条件)BooleanQuery.Builder builder = new BooleanQuery.Builder();builder.add(query1, BooleanClause.Occur.MUST);builder.add(query2, BooleanClause.Occur.MUST);BooleanQuery booleanQuery = builder.build();//执行查询并打印结果
        printResult(booleanQuery, indexSearcher);}

转载于:https://www.cnblogs.com/riches/p/11479027.html

搜索引擎学习(六)Query的子类查询相关推荐

  1. 搜索引擎学习(三)Lucene查询索引

    一.查询理论 创建查询:构建一个包含了文档域和语汇单元的文档查询对象.(例:fileName:lucene) 查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档i ...

  2. 搜索引擎学习(七)解析查询

    QueryParser[解析查询] 定义:QueryParser的解析查询是用Lucene语法进行查询,而上一篇说到的子类查则是使用java对象来进行查询条件的封装. 使用方式:使用QueryPars ...

  3. 云计算设计模式(六)——命令和查询职责分离(CQRS)模式

    云计算设计模式(六)--命令和查询职责分离(CQRS)模式 隔离,通过使用不同的接口,从操作读取数据更新数据的操作.这种模式可以最大限度地提高性能,可扩展性和安全性;支持系统在通过较高的灵活性,时间的 ...

  4. 前端学习六——html5+CSS3

    前端学习六--html5+CSS3 HTML5 H5新增语义标签 多媒体标签 audio音频标签 audio音频标签常见属性 音频标签语法 视频标签video 视频标签语法 H5新增input表单.表 ...

  5. 搜索引擎学习资源收集(转)

    原文: http://blog.chinaunix.net/u/4764/showart_270897.html 搜索引擎学习资源收集 一.搜索引擎技术/动态资源 <一>.综合类 1.卢亮 ...

  6. 搜索引擎学习资源(作者:dongdonglang)

    搜索引擎学习资源收集 作者:dongdonglang   http://www.dunsh.org/forums/thread-2716-1-2.html 一.搜索引擎技术/动态资源 <一> ...

  7. Spring Boot 整合 Elasticsearch,实现 function score query 权重分查询

    运行环境:JDK 7 或 8,Maven 3.0+ 技术栈:SpringBoot 1.5+,ElasticSearch 2.3.2 本文提纲 一.ES 的使用场景 二.运行 springboot-el ...

  8. Pandas简明教程:六、Pandas条件查询

    文章目录 1.基本方法 2.高级查询 3. 可用于修改内容的`where`方法 4.条件检索进阶:快速的查询方法`query` 5.其它检索方法简述 本系列教程教程完整目录: 目前大家公认的一个说法是 ...

  9. JavaWeb-综合案例(用户信息)-学习笔记05【分页查询功能】

    Java后端 学习路线 笔记汇总表[黑马程序员] JavaWeb-综合案例(用户信息)-学习笔记01[列表查询] JavaWeb-综合案例(用户信息)-学习笔记02[登录功能] JavaWeb-综合案 ...

最新文章

  1. 9-分析事物问题并编写 Utils 文件
  2. MySQL5.6一主多从复制配置方式一:Tungsten复制中间件
  3. Python获取控制台输入
  4. 机器学习理论《统计学习方法》学习笔记:第五章 决策树
  5. boost::exception_test::throw_test_exception<T>的测试程序
  6. Java转置_Java实现单链表的逆转置
  7. jquery选择器连续选择_JQuery中的选择器
  8. Twisted中有个功能叫代理
  9. 电信光猫DDNS的设置经历
  10. 网吧无盘服务器进u盘启动,利用U盘启动在网吧免费上网
  11. 计算机专业论文周进展300字,论文进展情况记录300字_论文周进展情况记录文库_论文进展情况18篇记录...
  12. html参考文献英文文献,写英文paper的参考文献格式How To Cite References - Chicago Style...
  13. php上传图片到七牛云,PHP拖拽上传图片到七牛云
  14. 502粘到手上变硬了怎么办_急手被502胶水粘住了怎么办?
  15. 关于cv.waitKey
  16. TP全行业小程序运营管理系统源码+一键生成小程序
  17. 服务器响应程序,封装高可复用的服务端响应SSC程序修复对象 --ServerResponse
  18. nginx代理的域名对应的ip更换后还解析到之前的ip
  19. 排查Spring 无法启动的问题
  20. python编写会计凭证金蝶_如何在金蝶财务软件中录入会计凭证

热门文章

  1. 【POJ 2503】Babelfish(水题)stl map存取即可
  2. Android Studio 导入应用时报错 Error:java.lang.RuntimeException: Some file crunching failed, see logs for de
  3. 目标和—leetcode494
  4. 乘积最大子数组—leedcode152
  5. 合并K个排序链表—leetcode23
  6. idea-jvm参数设置(有注释)
  7. Cortex_m3的启动过程
  8. HDU Problem - 2732 Leapin' Lizards(最大流,拆点建边)
  9. c语言把四位数1234变成4123,用4个1组成一个数-3,4四个数字可以组成数字不重复和自然数的 – 手机爱问...
  10. ssh框架mysql连接出错_使用ssh框架,不能像数据库添加数据,还不报错