一、Lucene相关基础概念

定义:一个简易的工具包,实现文件搜索的功能,支持中文,关键字,多条件查询,凡是文件名或文件内容包含的都查出来。

数据分类:结构化数据(固定格式或有限长度的数据)和非结构化数据(不定长或无固定格式的数据)

PS:lucene是搜索引擎的底层实现,solr实际上是对lucene进行封装了的框架。

二、数据搜索

【1】结构化数据

  由于数据有一定的规范和结构,通常使用sql语句来查询。

【2】非结构化查询

  (1)顺序扫描法:一个文档一个文档的找,效率低,相当慢。

(2)全文检索:将非结构化数据中的一部分提取出来重新组织成为索引,这种先建索引,再对索引进行搜索的过程就叫做全文检索。(例:字典)

PS:虽然创建索引的过程非常耗时,但是索引一旦创建就可以多次使用,全文检索主要处理的就是查询,所以耗时间创建索引是非常值得的!

三、搜索流程

索引:1、使用流读取文档内容 2、构建文档内容的具体对象(bean) 3、对文档内容做分词 4、创建索引

索引库:里面既存放了索引,也存放了具体的文档。(可看做类似字典的结构:有目录,也有具体的内容)

用户查询接口:即关键词输入框,并不是指java实现类的对应接口。

创建索引

1.获得原始文档

原始文档:指的是要索引和搜索的内容,表现形式包括网站的网页,数据库的数据和磁盘上的文件等...

2.创建文档对象

lucene文档对象:包含了许许多多的域(field),每个文档有一个唯一编号,即文档id。

  • 每个文档可以有多个域
  • 不同文档可以有不同的域
  • 同个文档可以有相同的域(域名和域值都相同)

3.分析文档

分词:将原文档提取单词进行分词,去除标点符号去除停用词,将大写的文字全部转换为小写进行分词,最终生成汇单元(一个一个的单词)。

term:分词后每个单词称为一个term,不同域中拆出来的相同单词不同的term!

term的结构:类似于K-V的结构:term  域的名称(K)  域的值(V)

4.创建索引

索引结构:倒排索引结构(反向索引结构),包括索引文档两部分。

搜索引擎学习(一)初识Lucene的更多相关文章

  1. 初识lucene(想看代码的跳过)

    最早是在百度贴吧里看到的lucene这个名称,只知道跟搜索引擎有关,因为工作中一直以来没有类似的需求,所以没有花时间学习这方面的知识. 刚过完年,公司不忙,自己闲不住把<Netty权威指南> ...

  2. SSH 框架学习之初识Java中的Action、Dao、Service、Model-收藏

    SSH 框架学习之初识Java中的Action.Dao.Service.Model-----------------------------学到就要查,自己动手动脑!!!   基础知识目前不够,有感性 ...

  3. DotNetty网络通信框架学习之初识Netty

    p{ text-align:center; } blockquote > p > span{ text-align:center; font-size: 18px; color: #ff0 ...

  4. 学习笔记CB011:lucene搜索引擎库、IKAnalyzer中文切词工具、检索服务、查询索引、导流、word2vec

    影视剧字幕聊天语料库特点,把影视剧说话内容一句一句以回车换行罗列三千多万条中国话,相邻第二句很可能是第一句最好回答.一个问句有很多种回答,可以根据相关程度以及历史聊天记录所有回答排序,找到最优,是一个 ...

  5. 搜索引擎学习(五)Lucene操作索引

    一.代码分析 /** * Lucene入门 * 操作索引 */ public class ManageIndex { public IndexWriter getIndexWriter() throw ...

  6. 搜索引擎学习(三)Lucene查询索引

    一.查询理论 创建查询:构建一个包含了文档域和语汇单元的文档查询对象.(例:fileName:lucene) 查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档i ...

  7. 搜索引擎学习(二)Lucene创建索引

    PS:需要用到的jar包: 代码实现 1.工程结构 2.设置工程依赖的jar包 3.代码实现 /** * Lucene入门 * 创建索引 */ public class CreateIndex { / ...

  8. 1. 初识 Lucene

    在学习Lucene之前呢,我们当然首先要了解下什么是Lucene. 0x01 什么是Lucene ? Lucene是一套用于全文检索和搜索的开放源代码程序库,由Apache软件基金会支持和提供. Lu ...

  9. (转)初识 Lucene

    Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目. ...

随机推荐

  1. qemu-img check命令详解

    1.问题现象 生产环境上,对计算节点文件系统修复,导致某些虚机的镜像文件数据丢失,出现异常,最终造成虚机无法启动,查看对应计算节点的nova日志,报如下错误 nova-compute: File &q ...

  2. Python的pyttsx3安装失败的解决方案

    尝试更新安装工具,然后重试安装: pip install -U setuptools pip install pyttsx3 如果仍不能解决您的问题,您也可以尝试指定pyttsx3的版本 pip in ...

  3. Linux基本命令及编程环境实验

    目录 一.Linux基本命令详细汇总 1.目录及文件相关命令 2.系统信息查询 3.文件操作(统计.过滤.搜索.权限) 4.其他命令 二.Linux终端上vi命令编程 1.进入vi命令模式 2.vi编 ...

  4. Vue + axios + SpringBoot 2实现导出Excel

    Vue + axios + SpringBoot 2实现导出Excel 1. 前端js代码-发送Http请求 /** * 文件下载 * @param url 下载地址 * @param fileNam ...

  5. [QZOI2019]Game 题解

    QZOI2019 CSP-S模拟赛 T1 错误的贪心导致考场上只有10pts... 看来以后贪心还是需要先证明啊 题目描述 小A和小B在玩一个游戏,他们两个人每人有 $n$ 张牌,每张牌有一个点数,并 ...

  6. python习题 随机密码生成 + 连续质数计算

    随机密码生成 描述 补充编程模板中代码,完成如下功能:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪ ...

  7. Sqli-labs 1-10

    Less 1-4(基础注入) 基础知识: table_schema:数据库的名称 table_name:表的名称 column_name:列的名称 information_schema:表示所有信息, ...

  8. 如何使用zabbix监控公网环境的云服务器(从小白到高级技术顾问!!!)

    问题:当我们在本地部署了一台Zabbix服务器后,想要对云上的服务器做监控.但是zabbix一个在内网,云服务器一个在公网,网络环境不同该如何解决?能否检测到云服务器数据? 思路:使用NAT技术,将本 ...

  9. 我竟然才知道slf4j里还有个MDC

    大家好久不见,我是walking.今天给大家带来一个日志方面的知识——MDC,不知道大家认识不,反正我是最近刚知道的 初见MDC 前两天看项目中的代码,无意中看到一个自定义的线程池 MDCThread ...

  10. composer 三大组成部分

    composer 三大组成部分:1. 仓库 2. 命令行下载器 3. 自动加载. 1. 仓库 公有仓库 https://packagist.org 私有仓库 https://packagist.com ...