Lucene01--倒排索引思想
Lucene01--倒排索引思想
1、 倒排索引的概念:
首先对数据按列拆分存储,然后对文档中的数据分词,对词条进行索引,并记录词条在文档中出现的位置。这样查找时只要找到了词条,就找到了对应的文档。概括来讲是先找到词条,然后看看哪些文档包含这些词条。
1.1 文档(Document):
索引库中的每一条原始数据,例如一个网页信息,一件商品信息。
1.2 词条:
原始数据按照算法进行分词,得到的每一个词。
2、 创建倒排索引流程
2.1 获得文档:比如要存储文章
2.2 创建文档列表
首先将数据按列进行拆分存储,类似于mysql的表存储,每一条数据,就是一个文档,形成文档列表。
假设文章有编号(docId)、标题(title)、内容(content)、评分(score)。每一条数据就是一篇文章。

2.3 创建倒排索引列表
然后对文档中的数据根据分词规则经常分词,得到词条。对词条进行编号,并以词条创建索引。然后记录下包含该词条的所有文档编号(以及其它信息)。
比如按照title字段进行分词
词ID 词典 词所对应的文档id 词所对应的字段(域)
1 我的 1,2,3 title
2 祖国 1 title
3 家乡 2 title
4 女友 3 title

整体流程如下

3、 搜索流程
3.1 当用户输入任意的搜索关键词时,首先对用户输入的内容进行词拆分,得到要搜索的所有词条,比如用户根据标题搜索“我的老友”,拆分后就是“我的”、“老友”
3.2 然后拿着这些拆分后的词去倒排索引列表中进行匹配。找到这些词对应的所有文档编号。
3.3 最后根据这些编号去文档列表中找到文档

4、 索引库
一个索引:一张文档列表 + 一张倒排索引表。
创建索引的流程也就是创建倒排索引的流程。

5、 什么是Lucene?
如果理解了倒排索引思想,我们再来看看到底什么是Lucene?
Lucene是一个基于java开发全文检索工具包。
5.1 全文检索
5.1.1 定义1:全文检索是利用倒排索引技术对需要搜索的数据进行处理,然后提供快速匹配的技术。
5.1.2 定义2:先创建索引然后对索引进行搜索的过程,就是全文检索。
欢迎评论!
Lucene01--倒排索引思想的更多相关文章
- ELK-全文检索技术-lucene
ELK : ELK是ElasticSearch,LogStash以及Kibana三个产品的首字母缩写 一.倒排索引 学习elk,必须先掌握倒排索引思想, 参考文档: https://www.cn ...
- ElasticSearch所使用的倒排索引的思想和使用场景
背景: 在关系数据库系统里,索引是检索数据最有效率的方式,.但对于搜索引擎,它并不能满足其特殊要求: 1)海量数据:搜索引擎面对的是海量数据,像Google,百度这样大型的商业搜索引擎索引都是亿级甚至 ...
- [Search Engine] 搜索引擎技术之倒排索引
倒排索引是搜索引擎中最为核心的一项技术之一,可以说是搜索引擎的基石.可以说正是有了倒排索引技术,搜索引擎才能有效率的进行数据库查找.删除等操作. 1. 倒排索引的思想 倒排索引源于实际应用中需要根据属 ...
- 倒排索引压缩:改进的PForDelta算法
由于倒排索引文件往往占用巨大的磁盘空间,我们自然想到对数据进行压缩.同时,引进压缩算法后,使得磁盘占用减少,操作系统在query processing过程中磁盘读取效率也能提升.另外,压缩算法不仅要考 ...
- 倒排索引的AND操作
这是一道来自百度的面试题.倒排索引的AND操作. 倒排索引是以关键词作为索引项来索引文档的一种机制,如图中Brutus.Calpurnia.Caesar为关键词,2.4.8等等为文档ID. 现在有一个 ...
- hadoop学习第三天-MapReduce介绍&&WordCount示例&&倒排索引示例
一.MapReduce介绍 (最好以下面的两个示例来理解原理) 1. MapReduce的基本思想 Map-reduce的思想就是“分而治之” Map Mapper负责“分”,即把复杂的任务分解为若干 ...
- 作用域 作用域链 闭包 思想 JS/C++比较
首先,我说的比较是指JS中这种思想/实现方式与C++编译原理中思想/实现方式的比较 参考链接:(比较易懂的介绍,我主要写个人理解) 作用域链: http://www.cnblogs.com/dolph ...
- Elaticsearch倒排索引
ES倒排索引基本原理 索引(index)可以分为正序索引(Forward Indexes)和倒排索引(Inverted Index)两种.在关系型数据库中使用索引可以避免数据检索走全表扫描,将检索的时 ...
- Elasticsearch 中为什么选择倒排索引而不选择 B 树索引
目录 前言 为什么全文索引不使用 B+ 树进行存储 全文检索 正排索引 倒排索引 倒排索引如何存储数据 FOR 压缩 RBM 压缩 倒排索引如何存储 字典树(Tria Tree) FST FSM 构建 ...
随机推荐
- Ptypes一个开源轻量级的c++库,包括对一些I/O操作、网络通信、多线程和异常处理的封装
C++开源项目入门级:Ptypes Ptypes一个开源轻量级的c++库,包括对一些I/O操作.网络通信.多线程和异常处理的封装.虽然代码有限,包括的内容不少,麻雀虽小,五脏俱全. 提高: ...
- Hadoop 3、Hadoop 分布式存储系统 HDFS(好多彩色图)
HDFS是Hadoop Distribute File System 的简称,也就是Hadoop的一个分布式文件系统. 一.HDFS的优缺点 1.HDFS优点: a.高容错性 .数据保存多个副本 .数 ...
- ubuntu QT开发环境(三种方法安装Qt4.8,其中apt-get方法安装QT库最简单)good
方法一 QT4.8.0库+QT Creator 2.4.1 特别声明:此方法极其耗时间,看电脑性能了.配置configure可减少编译时间 1.下载Qt .进入网址http://qt.nokia.co ...
- linux下mysql定时备份
1. 在服务器上建立备份文件的存放文件夹 sudo mkdir /usr/local/dbbackup 2. 编写备份脚本 vi dbbackup.sh 在里面编写如下内容 mysqldump -ur ...
- ssh超时时间设置(设置ClientAliveInterval),附SSH超详细参数
作者: daodaoliang 版本: V 0.0.1 日期: 2016年12月29日 0x00 OpenSSH 简介 OpenSSH是采用SSH协议实现的重要的远程连接工具,它对所有的数据进行加密以 ...
- github 上传更新代码(最简单的方法)
1.首先你需要一个github账号,还没有的朋友先去注册一个吧! GitHub地址:https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路直接安装即可 ...
- C语言之父Dennis Ritchie告诉你:如何成为世界上最好的程序员?
文/Ohans Emmanuel 译/网易云信 想要阅读更多技术干货文章,欢迎关注网易云信博客. 了解网易云信,来自网易核心架构的通信与视频云服务. 我不知道如何成为世界上最好的程序员.但是,我们可以 ...
- 音视频技术“塔尖”之争,网易云信如何C位出道?
音视频技术“塔尖”之争,网易云信如何C位出道? 社交+美颜.抖音短视频.在线狼人杀.直播竞答.子弹短信……,过往两三年间,互联网新产品和新玩法层出不穷,风口不断切换.这些爆红的网络应用背后,都有一些共 ...
- PHP和javascript判断用户使用的是手机还是电脑
PHP判断手机还是电脑 <?php $is_mobile = (is_mobile() == true) ? "手机" : "电脑"; echo '< ...
- JAVA复习笔记03(完)
31.类中可定义接口 一个定义接口的java文件中最多有1个Public的接口 32.TreeMap 按照键值升序排序 LinkedHashMap 按照插入顺序排序 Map的操作: Map<in ...