Solr倒排索引原理

倒排索引的一些术语

  • 文档(Document):一般搜索引擎的处理对象是互联网网页,比如Word,PDF,html,XML等不同格式的文件都可以称之为文档。

  • 文档集合(Document Collection):由若干文档构成的集合称之为文档集合。例子:很多电子邮件都是文档集合。

  • 文档编号(Document ID):在搜索引擎内部,会将文档集合内每个文档赋予一个唯一的内部编号,以此编号来作为这个文档的唯一标识

  • 单词编号(Word ID):与文档编号类似,搜索引擎内部以唯一的编号来表征某个单词

  • 单词词典(Lexicon):搜索引擎的通常索引单位是单词,单词词典是由文档集合中出现过的所有单词构成的字符串集合

  • 倒排列表(PostingList):倒排列表记录某个单词的所有文档的文档列表、单词在该文档中出现的位置信息

  • 倒排文件(Inverted File):所有单词的倒排列表往往顺序地存储在磁盘的某个文件里,这个文件即被称之为倒排文件

倒排索引原理

1、每个分词的单词对应所在的文档列表(倒排列表)
在这里插入图片描述
2、单词ID”一栏记录了每个单词的单词编号,第二栏是对应的单词,第三栏即每个单词对应的倒排列表。比如单词“谷歌”,其单词编号为1,倒排列表为{1,2,3,4,5},说明文档集合中每个文档都包含了这个单词。
在这里插入图片描述
3、在单词对应的倒排列表中不仅记录了文档编号,还记载了单词频率信息(TF),即这个单词在某个文档中的出现次数,之所以要记录这个信息,是因为词频信息在搜索结果排序时,计算查询和文档相似度是很重要的一个计算因子,方便后续排序时进行分值计算。

下图中,词“创始人”的单词编号为7,对应的倒排列表内容为:(3:1),其中的3代表文档编号为3的文档包含这个单词,数字1代表词频信息,即这个单词在3号文档中只出现过1次,其它单词对应的倒排列表所代表含义与此相同。

在这里插入图片描述
4、 实用的倒排索引还可以记载更多的信息,索引系统除了记录文档编号和单词频率信息外,额外记载了两类信息,即每个单词对应的“文档频率信息”以及在倒排列表中记录单词在某个文档出现的位置信息

以单词“拉斯”为例,其单词编号为8,文档频率为2,代表整个文档集合中有两个文档包含这个单词,对应的倒排列表为:{(3;1;<4>),(5;1;<4>)},其含义为在文档3和文档5出现过这个单词,单词频率都为1,单词“拉斯”在两个文档中的出现位置都是4,即文档中第四个单词是“拉斯”
在这里插入图片描述

Solr搜索过程

  • 1、收集待索引的原文档

从数据库、web等获取原文档。

  • 2、将原文档交给分词组件(Tokenizer)

此过程叫做Tokenize,得到的结果称为Token。

会做如下几件事:
1.将文档分成一个个独立的单词
2.去除标点
3.去除停词(stopword)
  • 3、将得到的Token交给语言处理组件(LinguisticProcessor)

此过程处理的结果是Term

会做如下几件事:
1.转为小写
2.将单词缩减为词根,如cars-->car
3.将单词转变为词根,如drove-->drive
  • 4、将得到的Term交给索引组件(Indexer)
会做如下几件事:
1.将得到的Term创建字典
2.对字典按字母排序
3.合并相同的Term为倒排索引表

参数:https://blog.csdn.net/hu948162999/article/details/42463043

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solr(Apache Solr)和Elasticsearch(ES)都是流行的搜索引擎,它们都使用倒排索引来实现高效的全文搜索。下面是Solr倒排索引和ES的倒排索引之间的一些区别: 1. 底层技术:Solr是基于Apache Lucene构建的,而ES也是基于Lucene构建的。因此,它们共享许多相似的特性和原理。 2. 分布式架构:ES专注于分布式搜索和分析,具有内置的分布式功能。它提供了水平扩展性和高可用性,适用于大型集群环境。而Solr可以通过SolrCloud实现分布式搜索,但相对于ES来说,配置和管理方面可能稍显复杂。 3. 功能和插件生态系统:Solr提供了丰富的功能和插件,例如地理空间搜索、分片索引等。它也有大量的可扩展性选项,可以根据需求进行自定义。ES也提供了类似的功能和插件生态系统,并且在近年来在这方面发展得非常迅速。 4. 查询语法:Solr使用一种称为Solr查询语法(Solr Query Syntax)的自定义查询语言,该语言具有灵活的查询语法和查询参数。ES使用JSON格式的查询DSL(Domain Specific Language),使得查询结构更加清晰和易于理解。 5. 文档管理:Solr和ES都支持结构化和非结构化数据的索引和搜索。Solr更加适合于传统的文档管理,例如处理大规模的XML和CSV文件。ES则更加适合于实时数据和日志分析,可以通过简单的API实时索引和搜索数据。 总的来说,Solr和ES在倒排索引的实现上具有相似之处,但在分布式架构、功能和查询语法等方面存在一些差异。选择使用哪个取决于你的具体需求和技术栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值