一、查询理论

创建查询:构建一个包含了文档域语汇单元文档查询对象。(例:fileName:lucene)

查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档id列表

二、代码分析

实现代码

/*** Lucene入门* 查询索引*/
public class QueryIndex {/*** 查询索引* 第一步:创建一个Directory对象,指定索引库的位置* 第二步:创建一个IndexReader(索引读取)对象,需要指定Directory对象* 第三步:创建一个IndexSearcher(索引搜索)对象,需要指定IndexReader对象* 第四步:创建一个TermQuery(域查询)对象,指定查询的域和查询关键词* 第五步:执行查询* 第六步:返回查询结果,遍历查询结果并输出* 第七步:关闭IndexReader对象(关流)*/@Testpublic void queryIndex() 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);/*第四步:创建一个TermQuery(域查询)对象,指定查询的域和查询关键词*/Query query = new TermQuery(new Term("fileContent", "lucene"));//PS:TermQuery为精准查询/*第五步:执行查询*/TopDocs topDocs = indexSearcher.search(query, 2);//根据query搜索,返回评分最高的2条/*第六步:返回查询结果,遍历查询结果并输出*/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("----------华丽的分割线----------");}/*第七步:关闭IndexReader对象(关流)*/indexReader.close();}
}

常用的搜索方法

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

搜索引擎学习(三)Lucene查询索引相关推荐

  1. 【示例】Lucene查询索引库编程步骤

    Lucene查询索引库编程步骤

  2. Lucene查询索引代码实现

    查询索引 实现步骤 第一步:创建一个Directory对象,也就是索引库存放的位置. 第二步:创建一个indexReader对象,需要指定Directory对象. 第三步:创建一个indexsearc ...

  3. Inside Lucene/超人气搜索引擎学习(2.0)-读取索引

    上一节 下一节 Index in Practice 索引: 按图索骥 TermDoc从哪读取数据,自然是硬盘上已经建好的某个index, 具体说, 是从index中的某个文件读取. 要了解TermDo ...

  4. (转)全文检索技术学习(三)——Lucene支持中文分词

    http://blog.csdn.net/yerenyuan_pku/article/details/72591778 分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程:    从一个 ...

  5. ElasticSearch学习(三)-正排索引和倒排索引

    见其名知其意,有倒排索引,对应肯定,有正向索引. 正向索引(forward index),反向索引(inverted index)更熟悉的名字是倒排索引. 在搜索引擎中每个文件都对应一个文件ID,文件 ...

  6. Lucene查询索引(分页)

    分页查询只需传入每页显示记录数和当前页就可以实现分页查询功能 Lucene分页查询是对搜索返回的结果进行分页,而不是对搜索结果的总数量进行分页,因此我们搜索的时候都是返回前n条记录 package c ...

  7. SQL语言之DQL语言学习(三)排序查询

    语法: select 查询列表 from表where筛选条件order by 排序列表[asc / desc] 其中降序为 DESC 升序为 ASC 如果两者都不写的话系统默认是升序 案例一 查询员工 ...

  8. Entity Framework学习三:查询、插入、更新和删除操作

    1.LINQ过滤数据  var query = from person in context.Peoplewhere person.FirstName.StartsWith("a" ...

  9. 微服务03 分布式搜索引擎 elasticsearch ELK kibana RestAPI 索引库 DSL查询 RestClient 黑马旅游

    分布式搜索引擎01 -- elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是 ...

最新文章

  1. NASA发现超级地球,真的适宜居住?
  2. 多线程基础(五)NSThread线程通信
  3. etherpad an interactive approach for combining multiple sentences from different students in class
  4. 验证码加减乘PHP,使用php实现加减法验证码
  5. C# WinForm程序退出的方法比较
  6. php读取文件和读取redis,本地测试读取redis和普通文件缓存的速度,redis慢一倍?...
  7. PaperNotes(19)-Learning Lane Graph Representations for Motion Forecasting
  8. Go Web 编程--超详细的模板库应用指南
  9. 中国替扎尼定行业市场供需与战略研究报告
  10. Sublime Text3:显示/隐藏侧边栏快捷键 修改侧边栏颜色、字体大小
  11. IIS6配置和PHP5.6环境安装
  12. miui12怎么自定义开机动画_MIUI12体验:媲美iOS的细腻和流畅
  13. CodingTrip - 携程编程大赛-第二题-携程员工运动会场地问题
  14. Mybatis解决查询返回Map类型时值为null的字段没有在Map结果集中的问题
  15. python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...
  16. 计算机一级考试:选择题汇总D(精简版)
  17. Android开发整理
  18. 智能家居中的软件测试,智能家居测试思路
  19. 电子书《寿康宝鉴》(附白话)全文连载(一)
  20. 转换 JSON API 用 Chopper 和 JsonSerializable

热门文章

  1. 2020-09-11
  2. 1032 挖掘机技术哪家强 (20 分)(c语言)
  3. golang中的defer
  4. gcc undefined reference to 问题解决方法(使用库)
  5. 电路知识--认识原理图(三)
  6. linux下使用rdesktop连接远程windows
  7. 10 种机器学习算法的要点(附 Python 和 R 代码)
  8. 关于const变量的一点理解
  9. HDU - Dogs' Candies
  10. hplaserjet1022老提示打印错误,hp laserjet 1022 在win7上正确的安装步骤