一步一步学lucene——(第二步:示例篇)

简介:

在上面的篇幅中我们已经了解到了lucene,及lucene到底是做什么的,什么情况下才能够使用lucene,下面我们就结合一个例子来详细说明一下lucene的API,看看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,如下图:

                  图:配置查询参数

点击运行,可以得到运行结果。

也就是我们上面索引的文件,当然,随着文件的多少及大小,速度会不同,这里只是一个演示程序,你可以根据你本身的程序自行设置查询条件。

索引过程中的几个核心类

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查询请求流程

[源码下载]

目录
相关文章
|
设计模式 Java C++
设计模式-建造者模式
设计模式-建造者模式
116 4
|
SQL 分布式计算 Java
|
9天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1198 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1137 87
|
7天前
|
机器学习/深度学习 物联网
Wan2.2再次开源数字人:Animate-14B!一键实现电影角色替换和动作驱动
今天,通义万相的视频生成模型又又又开源了!Wan2.2系列模型家族新增数字人成员Wan2.2-Animate-14B。
588 11
|
18天前
|
人工智能 运维 安全

热门文章

最新文章