搜索引擎学习(三)Lucene查询索引
一、查询理论
创建查询:构建一个包含了文档域和语汇单元的文档查询对象。(例:fileName:lucene)
查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档id列表。
二、代码分析
实现代码
/**
* Lucene入门
* 查询索引
*/
public class QueryIndex { /**
* 查询索引
* 第一步:创建一个Directory对象,指定索引库的位置
* 第二步:创建一个IndexReader(索引读取)对象,需要指定Directory对象
* 第三步:创建一个IndexSearcher(索引搜索)对象,需要指定IndexReader对象
* 第四步:创建一个TermQuery(域查询)对象,指定查询的域和查询关键词
* 第五步:执行查询
* 第六步:返回查询结果,遍历查询结果并输出
* 第七步:关闭IndexReader对象(关流)
*/
@Test
public 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;//文档ID
Document 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();
}
}
常用的搜索方法
搜索引擎学习(三)Lucene查询索引的更多相关文章
- lucene&solr学习——创建和查询索引(代码篇)
1. Lucene的下载 Lucene是开发全文检索功能的工具包,从官网下载Lucene4.10.3并解压. 官网:http://lucene.apache.org/ 版本:lucene7.7.0 ( ...
- lucene&solr学习——创建和查询索引(理论)
1.Lucene基础 (1) 简介 Lucene是apache下的一个开放源代码的全文检索引擎工具包.提供完整的查询引擎和索引引擎:部分文本分析引擎. Lucene的目的是为软件开发人员提供一个简单易 ...
- Lucene查询索引
索引创建 以新闻文档为例,每条新闻是一个document,新闻有news_id.news_title.news_source.news_url.news_abstract.news_keywords这 ...
- lucene查询索引库、分页、过滤、排序、高亮
2.查询索引库 插入测试数据 xx.xx. index. ArticleIndex @Test public void testCreateIndexBatch() throws Exception{ ...
- lucene查询索引之QueryParser解析查询——(八)
0.语法介绍:
- lucene查询索引之Query子类查询——(七)
0.文档名字:(根据名字索引查询文档)
- Lucene4.9学习笔记——Lucene建立索引
基本上创建索引需要三个步骤: 1.创建索引库IndexWriter对象 2.根据文件创建文档Document 3.向索引库中写入文档内容 这其中主要涉及到了IndexWriter(索引的核心组件,用于 ...
- (转)全文检索技术学习(三)——Lucene支持中文分词
http://blog.csdn.net/yerenyuan_pku/article/details/72591778 分析器(Analyzer)的执行过程 如下图是语汇单元的生成过程: 从一个Re ...
- MySql学习(三) —— 子查询(where、from、exists) 及 连接查询(left join、right join、inner join、union join)
注:该MySql系列博客仅为个人学习笔记. 同样的,使用goods表来练习子查询,表结构如下: 所有数据(cat_id与category.cat_id关联): 类别表: mingoods(连接查询时作 ...
随机推荐
- nova 云主机 evacuate 简单分析
原文链接:http://www.ishenping.com/ArtInfo/3318250.html #故障节点compute=down nova host-evacuate ostack245.bj ...
- 如何理解Vue.js中的ref及$ref,$
1.vue官方文档 首先我们来看一下vue官方是怎么解释的 好了,我知道很多刚接触的vue的小白其实都不太看的懂官方文档在讲什么,下面我用自己的话翻译一下. 2.ref以及$ref 通过 ref 标注 ...
- @RequestBody和@RequestParam
@RequestBody的使用 https://blog.csdn.net/justry_deng/article/details/80972817 (@RequestBody Map map)接收多 ...
- SEO诊断方案以及执行方案
http://www.wocaoseo.com/thread-127-1-1.html 今天和大家一起讨论一下SEO诊断方案以及SEO执行方案要怎么写,主要从哪些方面进行呢,做SEO的朋友们一直在探讨 ...
- win10下MinGW的安装与配置(详细步骤)
一.安装mingw软件 1.进入官网 www.mingw.org 2.点击下载downloads 3.点击下载图标 4.点击install z 5.先选择安装的地址,再点击continue 6.等待相 ...
- 华师2019软件专硕复试机试题最后一题G:找数
G. 找数 单点时限: 1.0 sec 内存限制: 256 MB 问题描述 输入一个整数 n( 2≤n≤10 ) ,你需要找到一些 n 位数(允许有前置 0 ,见样例),这些 n 位数均 由 0 ~ ...
- 关于windou环境下使用http或者ftp搭建网络hu共享
第一步 右键此电脑进入控制面 第二步:进入程序点击启用或关闭windous功能 第三步进入服务开启界面 点击让windows更新为你下载文件,并保存更改完,然后关闭 四:邮件我的电脑进入管理 四右键添 ...
- 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...
- B - The Staircases (dp)
One curious child has a set of N little bricks. From these bricks he builds different staircases. St ...
- oracle无法通过ip地址连接
问题描述:使用plsql可以连接本地oracle实例,但telnet 192.168.130.71 (内网ip)不通. 其实在11g安装完成后,默认网络配置 listener.ora中 host = ...