Solr--全文索引原理

简介: 什么是全文搜索倒排索引结构正排索引倒排索引    在一些大型的门户网站和电商网站中,都有自己的站内搜索,但是使用传统的数据库查询方式已经无法满足一些高级的搜索要求,比如说:搜索速度要快、搜索结果要按照相关度排序,搜索的内容格式不固定,这些都需要使用全文实现搜索功能。

    在一些大型的门户网站和电商网站中,都有自己的站内搜索,但是使用传统的数据库查询方式已经无法满足一些高级的搜索要求,比如说:搜索速度要快、搜索结果要按照相关度排序,搜索的内容格式不固定,这些都需要使用全文实现搜索功能。

这里写图片描述

这里写图片描述

    

什么是全文搜索?


  • 信息检索
    我们先要知道信息检索:从信息集合中找出与用户需求相关的信息,检索的信息包括:文本,图像,音频,视频等信息。而全文检索是信息检索其中的一类。

这里写图片描述

    全文检索:是计算机索引程序扫描文章中的每一个词,对每一个词都建立索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的检索进行查找,并将查找结果返回给用户。
    数据检索:例如,数据均按”时间、人物、地点、事件”的形式存储,查询可以为地点=“北京”,数据检索的性能取决于所使用的标识字段的方法和用户对这种方法的理解,有很大的局限性。

  • 全文检索
    举个栗子:当我们去图书馆借书的时候,肯定不会说是去一本一本你的去翻看然后找自己感兴趣的书籍,我的天哪,这得找到猴年马月。

这里写图片描述

    所以我们进图书馆的时候一般都会先去查阅数据的索引卡,或者索引标志,找到相应的书籍;所以当一本书进入图书馆之后,最重要的就是建立索引卡,同样,对于我们所拥有的信息,也需要建立索引。
    建立索引,就是对待搜索的信息进行一定的分析,并将分析结果按照一定的组织方式存储起来,通常将这些结果存储在文件中。存储分析结果的文件的集合就是索引。在查询时,先从索引中查找,由于索引是有一定的结构组织的,所以查询的速度非常快。

这里写图片描述

    上图就是建立索引的过程,先对信息进行采集(如果信息检索系统在用户发出检索请求后再去互联网上找答案,根本无法再有限的时间返回结果),然后对信息进行加工,建立索引。在Internet上采集信息的软件被称为爬虫或者蜘蛛或者网络机器人。爬虫在Internet上访问每一个网页,没访问一个网页就把其中的内容传回本地服务器。爬虫的原理可以去看看这篇文章网络爬虫基本原理(一)

    

倒排索引结构


    一开始有点蒙,倒排序怎么个倒排序,那正排序又是什么?后来在网上找到一篇文章,正排索引和倒排索引

正排索引

    主要的意思就是说,当网络爬虫在Internet上收集信息的时候,会把收集到的网页进行处理,就是把对网页的内容进行分词(关键词),可以看成这样:

网页 关键词
网页A= 关键词1+关键词2+关键词3+关键词4+关键词5+关键词6+关键词7+…….
网页B= 关键词1+关键词2+关键词3+关键词4+关键词5+关键词6+关键词7+…….
网页C= 关键词1+关键词2+关键词3+关键词4+关键词5+关键词6+关键词7+…….

    
    具体怎么分词大家可以去了解了解分词器,中文的分词和英文的分词是不一样的。原理如下:

这里写图片描述

    正如上面的这个过程,把一个网页分成一个个的关键词的过程就是一个正排索引的过程。

倒排索引

    用户查信息的时候,一般都是通过关键词来查询相应的信息。

这里写图片描述

    倒排索引是这样的,倒排索引这个关键词之后跟了一堆网页。

关键词 网页
关键词1= 网页A+网页B+网页C+网页O+…….
关键词2= 网页B+网页P+网页Z+…….
关键词3= 网页D+网页T+网页Y+网页Z+…..

    而solr就是一个基于Lucene的Java全文搜索引擎服务器。

相关文章
|
3月前
|
存储 关系型数据库 MySQL
ES的全文索引和MySQL的全文索引有什么区别?如何选择?
【8月更文挑战第26天】ES的全文索引和MySQL的全文索引有什么区别?如何选择?
411 5
|
索引
18Solr管理索引库
18Solr管理索引库
24 0
|
索引
07Lucene索引库的修改
07Lucene索引库的修改
37 0
|
XML 搜索推荐 安全
lucene、solr、es的区别以及应用场景
@[TOC](目录) Lucene、Solr 和 Elasticsearch(ES) 都是基于 Lucene 引擎的搜索引擎,它们之间有相似之处,但也有一些不同之处。 Lucene 是一个低级别的搜索引擎库,它提供了一种用于创建和维护全文索引的 API,以及一些搜索和排序算法。Lucene 主要用于构建自定义搜索引擎,例如在 Java 应用程序中使用。 Solr 是 Lucene 的一个扩展,它提供了一个完整的搜索引擎框架,包括了索引、搜索、排序、过滤等功能。Solr 旨在为大规模数据集提供高性能的全文搜索功能,因此它支持分布式搜索、实时搜索和自定义排序和过滤器等功能。 Elasticsear
342 0
|
Apache 数据格式 算法
|
存储 固态存储 测试技术
基于Lucene查询原理分析Elasticsearch的性能
基于Lucene查询原理分析Elasticsearch的性能
702 1
|
存储 自然语言处理 数据库
Lucene 查询原理
# 前言 Lucene 是一个基于 Java 的全文信息检索工具包,目前主流的搜索系统Elasticsearch和solr都是基于lucene的索引和搜索能力进行。想要理解搜索系统的实现原理,就需要深入lucene这一层,看看lucene是如何存储需要检索的数据,以及如何完成高效的数据检索。
8648 1
|
存储 自然语言处理 Java
分布式--Lucene 全文检索
1. Lucene 官网 1). 概述 Lucene是一款高性能的、可扩展的信息检索(IR)工具库。信息检索是指文档搜索、文档内信息搜索或者文档相关的元数据搜索等操作。
1171 0
|
Apache 数据格式 XML