lucence 示例 (三)
2016-09-03 11:18
155 查看
在上面的篇幅中我们已经了解到了lucene,及lucene到底是做什么的,什么情况下才能够使用lucene,下面我们就结合一个例子来详细说明一下lucene的API,看看lucene是如何工作的。
其实这个很简单了,直接到baidu或者google上搜索一下,一般情况下第一个就是我们要的链接。下边给出lucene下载的链接:
http://lucene.apache.org/
图:lucene下载主页面
我们下面要做很多的测试,会建立很多的测试工程,如果一个一个手动的添加jar包会非常的麻烦,那么我们就需要配置eclipse环境。
打开eclipse,选择windows->preferences->java->build path->user libraries
将我们上边下载后的lucene中的包全部加载到这个用户变量中。
图:eclipse中加入的用户变量
下面这个程序就是读取指定文件夹下的文件并且将文件生成索引的过程,它有两个参数,一个是要索引的文件路径,一个是索引存放的路径。
我们将文件放到我们硬盘的目录上,然后通过程序建立索引。
索引程序如下:
View
Code
然后在工程上点击右键Run->Run configuration,新建一个Java Application,输入两个参数一个是索引目录,一个是文件存放目录
图:配置运行界面
运行后可以行到分析结果,当然目录中索引的内容不同得到的结果也就会不同。
图:索引txt文件时输出
因为这里边还没涉及到中文的部分,所以我们查询所有文档中包括"RUNNING"的文档。
程序内容如下:
View
Code
同上操作,配置新的Java Application,如下图:
图:配置查询参数
点击运行,可以得到运行结果。
也就是我们上面索引的文件,当然,随着文件的多少及大小,速度会不同,这里只是一个演示程序,你可以根据你本身的程序自行设置查询条件。
IndexWriter
IndexWriter是索引过程的核心组件。用于创建一个新的索引并把文档加到已有的索引中去,也可以向索引中添加、删除和更新被索引文档的信息。
Directory
Directory类描述了Lucene索引的存放位置。
Analyzer
Analyzer是分词器接口,文本文件在被索引之前,需要经过Analyzer处理。常用的中文分词器有庖丁、IKAnalyzer等。
Document
Document对象代表一组域(Field)的集合。其实说白了就是文件,可能是文本文件,word或者pdf等。
Field
Field就是每个文档中包含的不同的域。
lucene构建索引的流程图如下:
图:lucene构建索引流程
IndexSearcher
IndexSearcher是对前边IndexWriter创建的索引进行搜索。
Term
Term对象是搜索功能的基本单元,跟Field对象非常类似,可以放入我们查询的条件。
Query
Query就是Lucene给我们的查询接口,它有很多的子类,我们可以基于这些进行功能丰富的查询。
TermQuery
TermQuery是Lucene提供的最基本的查询类型。
TopDocs
TopDocs类是一个简单的指针容器,指针一般指向前N个排名的搜索结果,搜索结果即匹配查询条件的文档。
图:lucene查询请求流程
lucene的下载
其实这个很简单了,直接到baidu或者google上搜索一下,一般情况下第一个就是我们要的链接。下边给出lucene下载的链接:http://lucene.apache.org/
图:lucene下载主页面
配置环境
我们下面要做很多的测试,会建立很多的测试工程,如果一个一个手动的添加jar包会非常的麻烦,那么我们就需要配置eclipse环境。打开eclipse,选择windows->preferences->java->build path->user libraries
将我们上边下载后的lucene中的包全部加载到这个用户变量中。
图:eclipse中加入的用户变量
建立索引
下面这个程序就是读取指定文件夹下的文件并且将文件生成索引的过程,它有两个参数,一个是要索引的文件路径,一个是索引存放的路径。我们将文件放到我们硬盘的目录上,然后通过程序建立索引。
索引程序如下:
View
Code
然后在工程上点击右键Run->Run configuration,新建一个Java Application,输入两个参数一个是索引目录,一个是文件存放目录
图:配置运行界面
运行后可以行到分析结果,当然目录中索引的内容不同得到的结果也就会不同。
图:索引txt文件时输出
根据索引查询
因为这里边还没涉及到中文的部分,所以我们查询所有文档中包括"RUNNING"的文档。程序内容如下:
View
Code
同上操作,配置新的Java Application,如下图:
图:配置查询参数
点击运行,可以得到运行结果。
也就是我们上面索引的文件,当然,随着文件的多少及大小,速度会不同,这里只是一个演示程序,你可以根据你本身的程序自行设置查询条件。
索引过程中的几个核心类
IndexWriterIndexWriter是索引过程的核心组件。用于创建一个新的索引并把文档加到已有的索引中去,也可以向索引中添加、删除和更新被索引文档的信息。
Directory
Directory类描述了Lucene索引的存放位置。
Analyzer
Analyzer是分词器接口,文本文件在被索引之前,需要经过Analyzer处理。常用的中文分词器有庖丁、IKAnalyzer等。
Document
Document对象代表一组域(Field)的集合。其实说白了就是文件,可能是文本文件,word或者pdf等。
Field
Field就是每个文档中包含的不同的域。
lucene构建索引的流程图如下:
图:lucene构建索引流程
搜索过程中的几个核心类
IndexSearcherIndexSearcher是对前边IndexWriter创建的索引进行搜索。
Term
Term对象是搜索功能的基本单元,跟Field对象非常类似,可以放入我们查询的条件。
Query
Query就是Lucene给我们的查询接口,它有很多的子类,我们可以基于这些进行功能丰富的查询。
TermQuery
TermQuery是Lucene提供的最基本的查询类型。
TopDocs
TopDocs类是一个简单的指针容器,指针一般指向前N个排名的搜索结果,搜索结果即匹配查询条件的文档。
图:lucene查询请求流程
相关文章推荐
- lucence简介&lucence示例 ---http://blog.sina.com.cn/s/blog_4b81125f0100fqtj.html
- lucence简介&lucence示例
- JFreeChart 典型数据集设置示例
- 在OpenJWeb中使用dwr技术提交页面内容(网站意见)的示例
- Oracle 使用RMAN COPY 移动 Datafile 位置 示例
- vs2008\drivers\opengl_2.h.c_opengl基本功能介绍+示例
- javaScript 计算两个日期的天数相差(示例代码)
- thinkphp导出Excel文件的示例
- DMA 示例
- JavaScript按日期查询MongoDB中的数据的要点示例
- iOS实现动态的开屏广告示例代码
- Android上Bitmap文件解析示例
- laravel如何开启跨域功能示例详解
- java Timer测试定时调用及固定时间执行代码示例
- 无限级分类(非递归算法/存储过程版/GUID主键)完整数据库示例_(1)表结构
- jquery 读取xml数据示例
- DWR+Spring+Hibernate+Oracle在MyEclipse搭建框架示例
- 19个带示例的jQuery滚动条插件
- HBase Java简单示例
- IOS 示例地址