一、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相关推荐

  1. 搜索引擎学习资源收集(转)

    原文: http://blog.chinaunix.net/u/4764/showart_270897.html 搜索引擎学习资源收集 一.搜索引擎技术/动态资源 <一>.综合类 1.卢亮 ...

  2. 搜索引擎学习资源(作者:dongdonglang)

    搜索引擎学习资源收集 作者:dongdonglang   http://www.dunsh.org/forums/thread-2716-1-2.html 一.搜索引擎技术/动态资源 <一> ...

  3. 前端学习(初识HTML 上)——基础知识和基本标签

    前端学习之初识HTML 一.HTML基础知识 1.html定义 2.html特点 3.html标签 4.html基础结构 (1)<head></head>中的<meta& ...

  4. Nancy in .Net Core学习笔记 - 初识Nancy

    原文:Nancy in .Net Core学习笔记 - 初识Nancy 前言 去年11月份参加了青岛MVP线下活动,会上老MVP衣明志介绍了Nancy, 一直没有系统的学习一下,最近正好有空,就结合. ...

  5. Nacos学习之初识Nacos

    Nacos学习之初识Nacos 在分布式项目中既然存在Eureka这个注册中心,那么Nacos有充当什么角色?Nacos到底是个啥?他又是咋么下载安装的?本文我会将从什么是Nacos.Nacos与其他 ...

  6. PE病毒学习笔记——初识感染技术 (转自看雪学院)

    [分享]PE病毒学习笔记--初识感染技术 <script type="text/javascript"></script>   标 题: [分享]PE病毒学 ...

  7. Inside Lucene/超人气搜索引擎学习(0.5)-前传

    上一节 下一节 Episode 前传 搜索引擎的典型周期: 搜集数据->建立索引->应答搜索请求 无论有多少精彩的应用, 这个印刷时代就诞生的公式都不会作废, 公式中最关键的成分是 1. ...

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

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

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

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

最新文章

  1. RabbitMQ和Kafka到底怎么选?
  2. C语言多线程教程(pthread)(线程创建pthread_t,指定线程run方法pthread_create,加mutex锁,解锁,伪共享 false sharing【假共享】)
  3. OpenCV添加图像轨迹轨迹条 Adding Images Trackbar的实例(附完整代码)
  4. asp.net mvc 接入阿里大于 短信验证码发送
  5. vue sync用法
  6. webx学习(二)——Webx Framework
  7. sql server使用convert来取得datetime日期数据
  8. 当你没有能力的时候,所有的友善都是廉价的
  9. php的前端环境,PHP中的环境变量
  10. ubuntu下的snappy安装配置以及测试
  11. 国际音标的HTML实体对照表
  12. delphi 不允许在线程里操作ui怎么办_11款鲜为人知的在线工具,全面而又强大
  13. vmware workstation 12 打开vm14 不兼容问题解决
  14. 微信小程序点击事件传递自定义参数的方法和跨页面传递数据
  15. mysql学习笔记(八)事务管理
  16. 阿里云服务器带宽不够升级怎么收费?
  17. 【小程序源码】笑话段子手
  18. ❤️Bitmaps、HyperLogLog、Geospatial❤️——Redis三大特殊数据类型详述(万字长文原理讲解,大厂面试高频知识点,一文尽收囊中)
  19. 谈一谈APP支付失败的处理
  20. html如何制作艺术字体,设计华丽金沙艺术字体图片的PS教程

热门文章

  1. mysql隔离级别 举例_mysql的事务隔离级别举例
  2. 学习MFC首先要知道的--程序执行顺序
  3. AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
  4. linux 下升级apache,CentOS6.5在已有低版本环境下安装升级Apache+MySQL+PHP,centos6.5apache...
  5. Shell(7)——case
  6. 翻转字符串里的单词—leetcode151
  7. UCOS中断函数的编写
  8. 100的阶乘c语言代码,求10000的阶乘(c语言代码实现)
  9. html_5_小作业2_世纪佳缘注册页面
  10. 宿主机linux,宿主机上安装小linux