ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于Lucene的全文检索实践

2021-11-07 18:00:35  阅读:116  来源: 互联网

标签:lucene 索引 实践 查询 Lucene 全文检索 搜索 文档


由于项目的需要,使用到了全文检索技术,这里将前段时间所做的工作进行一个实践总结,方便以后查阅。在实际的工作中,需要灵活的使用lucene里面的查询技术,以达到满足业务要求与搜索性能提升的目的。

一、全文检索介绍

1.1为什么需要全文检索

数据可以分为结构化数据和非结构化数据,对数据查询时,结构化数据可以通过SQL语句等方式查询,而非结构化数据(如txt,word等)无法用此方式查询。

我们利用将非结构化数据转化为非结构化数据(即先将文件中单词按空格拆分,把单词创建一个索引,然后查询索引,根据单词和文档的关系找到文档列表,即全文检索),进行快速查询。

1.2什么是全文检索

先创建索引,然后查询索引的过程是全文检索

具有一次创建,多次使用的特点(创建的速度有点慢)。

二、全文检索流程

1. 绿色表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容→采集文档→创建文档→分析文档→索引文档。 
2. 红色表示搜索过程,从索引库中搜索内容,搜索过程包括:用户通过搜索界面→创建查询→执行搜索,从索引库搜索→渲染搜索结果。

三、全文检索索引

3.1倒排索引

倒排索引即为全文检索的核心的部分,所谓倒排索引,简单地就是,根据单词,返回它在哪个文件中出现过,而且频率是多少的结果。这就像百度里的搜索,你输入一个关键字,那么百度引擎就迅速的在它的服务器里找到有该关键字的文件,并根据频率和其他的一些策略(如页面点击投票率)等来给你返回结果。这个过程中,倒排索引就起到很关键的作用。

3.2创建索引

你可以利用你的技术从数据库、互联网、爬虫、word等方式获取原始数据,即采集信息

3.3构建索引文档

对应每个原始文档创建一个Document对象(拥有唯一的ID)

每个Document中包含多个Field

不同的Document可以有不同的Field

同一个Document可以有相同的Field

域中以键值对的形式保存域的名称和值

四、全文检索使用

1、所需核心库

lucene-core

lucene核心库

lucene-queryparser

lucene查询解析器

lucene-analyzers-common

lucene默认分词器

lucene-analyzers-smartcn

lucene提供的中文分词器

ik-analyzer

开源中文分词器

2、lucene查询

查询方式

意义

TermQuery 精确查询
TermRangeQuery 查询一个范围
PrefixQuery 前缀匹配查询
WildcardQuery 通配符查询
BooleanQuery 多条件查询
PhraseQuery 短语查询
FuzzyQuery 模糊查询
Queryparser 万能查询(上面的都可以用这个来查询到

标签:lucene,索引,实践,查询,Lucene,全文检索,搜索,文档
来源: https://www.cnblogs.com/xiaoyh/p/15520673.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有