搜索引擎学习(一)初识Lucene
一、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.创建索引
索引结构:倒排索引结构(反向索引结构),包括索引和文档两部分。
转载于:https://www.cnblogs.com/riches/p/11437213.html
搜索引擎学习(一)初识Lucene相关推荐
- 搜索引擎学习资源收集(转)
原文: http://blog.chinaunix.net/u/4764/showart_270897.html 搜索引擎学习资源收集 一.搜索引擎技术/动态资源 <一>.综合类 1.卢亮 ...
- 搜索引擎学习资源(作者:dongdonglang)
搜索引擎学习资源收集 作者:dongdonglang http://www.dunsh.org/forums/thread-2716-1-2.html 一.搜索引擎技术/动态资源 <一> ...
- 前端学习(初识HTML 上)——基础知识和基本标签
前端学习之初识HTML 一.HTML基础知识 1.html定义 2.html特点 3.html标签 4.html基础结构 (1)<head></head>中的<meta& ...
- Nancy in .Net Core学习笔记 - 初识Nancy
原文:Nancy in .Net Core学习笔记 - 初识Nancy 前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合. ...
- Nacos学习之初识Nacos
Nacos学习之初识Nacos 在分布式项目中既然存在Eureka这个注册中心,那么Nacos有充当什么角色?Nacos到底是个啥?他又是咋么下载安装的?本文我会将从什么是Nacos.Nacos与其他 ...
- PE病毒学习笔记——初识感染技术 (转自看雪学院)
[分享]PE病毒学习笔记--初识感染技术 <script type="text/javascript"></script> 标 题: [分享]PE病毒学 ...
- Inside Lucene/超人气搜索引擎学习(0.5)-前传
上一节 下一节 Episode 前传 搜索引擎的典型周期: 搜集数据->建立索引->应答搜索请求 无论有多少精彩的应用, 这个印刷时代就诞生的公式都不会作废, 公式中最关键的成分是 1. ...
- 搜索引擎学习(五)Lucene操作索引
一.代码分析 /*** Lucene入门* 操作索引*/ public class ManageIndex {public IndexWriter getIndexWriter() throws Ex ...
- 搜索引擎学习(三)Lucene查询索引
一.查询理论 创建查询:构建一个包含了文档域和语汇单元的文档查询对象.(例:fileName:lucene) 查询过程:根据查询对象的条件,在索引中找出相应的term,然后根据term找到对应的文档i ...
最新文章
- RabbitMQ和Kafka到底怎么选?
- C语言多线程教程(pthread)(线程创建pthread_t,指定线程run方法pthread_create,加mutex锁,解锁,伪共享 false sharing【假共享】)
- OpenCV添加图像轨迹轨迹条 Adding Images Trackbar的实例(附完整代码)
- asp.net mvc 接入阿里大于 短信验证码发送
- vue sync用法
- webx学习(二)——Webx Framework
- sql server使用convert来取得datetime日期数据
- 当你没有能力的时候,所有的友善都是廉价的
- php的前端环境,PHP中的环境变量
- ubuntu下的snappy安装配置以及测试
- 国际音标的HTML实体对照表
- delphi 不允许在线程里操作ui怎么办_11款鲜为人知的在线工具,全面而又强大
- vmware workstation 12 打开vm14 不兼容问题解决
- 微信小程序点击事件传递自定义参数的方法和跨页面传递数据
- mysql学习笔记(八)事务管理
- 阿里云服务器带宽不够升级怎么收费?
- 【小程序源码】笑话段子手
- ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
- 谈一谈APP支付失败的处理
- html如何制作艺术字体,设计华丽金沙艺术字体图片的PS教程
热门文章
- mysql隔离级别 举例_mysql的事务隔离级别举例
- 学习MFC首先要知道的--程序执行顺序
- AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
- linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...
- Shell(7)——case
- 翻转字符串里的单词—leetcode151
- UCOS中断函数的编写
- 100的阶乘c语言代码,求10000的阶乘(c语言代码实现)
- html_5_小作业2_世纪佳缘注册页面
- 宿主机linux,宿主机上安装小linux