solr的基本原理

article/2025/9/18 21:29:38

solr介绍:

solr是一个全局检索引擎,能够快速地从大量的文本数据中选出你所需要的数据,而你只需要提供相应的关键词进行检索。solr的高效率查询靠的是底层强大的索引库,所以solr最关键的技术也是其底层的索引设计。solr工作的时候可以归结成两个过程1.创建索引2.搜索索引。

这是一张solr的基本工作图: 如图所示: ** 1.**图中横线左边部分说明了solr中的数据来源,solr可以从数据库中获得数据,用户只需要简单的操作即可将数据库中的数据导入到solr中,除了数据库外solr可以从文件系统中保存数据,能直接保存互联网的数据,当热用户也可手动导入数据。

** 2.**图中的index Documents就是前文所说的两个过程中的第一个创建索引,solr必须对导入的数据创建索引来保证查询的效率。

**3.**图上最底下有个index,表示一个索引库,索引库可以近似的看成是一个数据库,前面创建的索引必须保存在索引库中。

**4.**图中的横线上边右半部分表示了用户对solr的查询,用户通过各种方式对solr进行查询(如手动在solr管理页面上,通过solrj进行查询),查询到达solr后,solr进行search index(去索引库中对刚刚创建的索引进行检索)来找到用户想要得到的数据,并将数据集返回给用户。

###solr索引 solr的索引类似如下图:

solr的索引是一个反向索引,比如说现在要找带solr这个词的数据,那么首先会在词典中找到solr这个词,在倒排表中会有一个链表与solr这个词关联着,这个链表就是带有solr这个词的文本集的序号集。

###索引的创建过程 索引的创建过程可以分为:1.分词组件2.语言处理组件3.索引组件

**1.**分词组件: 当数据存入solr的时候首先会通过分词组件,分词组件的作用1.将数据分成一个个词汇。2.去除标点符号.3.去除停词(比如中文的“的”,“和”,“啦”等等)

比如存入“Students should be allowed to go out!”分词组件会先将句子分成多个单词“Students”,“should”,“be” ,“allowed”,“to”,“go”,“out”,“!”。随后会进行第二部将标点符号“!”去掉,最后第三步会将“to”,“be”去掉。最后留下的结果为:“Students”,“should”,“allowed”,“go”,“out”。

注意:可以看出我们再对solr进行搜索的时候应该尽量避免使用符号或者停顿词作为检索关键词。

**2.**语言处理组件: 语言处理组件的作用如下: 1.变为小写(Lowercase)。 2.将单词缩减为词根形式,如”cars”到”car”等。这种操作称为:stemming。 3.将单词转变为词根形式,如”drove”到”drive”等。这种操作称为:lemmatization。

注意:至此索引创建完成,搜索”drive”时,”driving”,”drove”,”driven”也能够被搜到。因为在索引中,”driving”,”drove”,”driven”都会经过语言处理而变成”drive”,在搜索时,如果您输入”driving”,输入的查询语句同样经过分词组件和语言处理组件处理的步骤,变为查询”drive”,从而可以搜索到想要的文档。Lowercase,stemming同理

3.索引组件 假设现在有两个文档: 文档一:Students should be allowed to go out with their friends, but not allowed to drink beer. 文档二:My friend Jerry went to school to see his students but found them drunk which is not allowed. 经过前两个组件的处理后得到如下索引: Term Document ID student 1 allow 1 go 1 their 1 friend 1 allow 1 drink 1 beer 1 my 2 friend 2 jerry 2 go 2 school 2 see 2 his 2 student 2 find 2 them 2 drink 2 allow 2


对字典按字母顺序排序: Term Document ID allow 1 allow 1 allow 2 beer 1 drink 1 drink 2 find 2 friend 1 friend 2 go 1 go 2 his 2 jerry 2 my 2 school 2 see 2 student 1 student 2 their 1 them 2


合并相同的词(Term)成为文档倒排(Posting List)链表 Document Frequency:文档频次,表示多少文档出现过此词(Term) Frequency:词频,表示某个文档中该词(Term)出现过几次

###索引的检索

通过前几步索引的创建,现在就可以对创建的索引进行检索了。

1.当用户的检索关键词进入solr后,solr会对传入的关键词进行处理,具体处理过程类似创建索引时语言处理组件对文档词汇的处理过程。 2.将处理后的词在词典中搜索得到一个文档集。 3.将文档集根据词频将文档集进行相关性排序。

4.将结果集返回给用户

转载于:https://my.oschina.net/jeker8chen/blog/1631181


http://chatgpt.dhexx.cn/article/o94IynDV.shtml

相关文章

Solr的工作原理(最直白的解释,简单易懂)懂?

Solr 什么是Solr Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。 为了在CNET网络的公司网站上添加搜索功能&…

Solr(一) Solr 简介及搜索原理

一、 Solr 简介 1 为什么使用 Solr 在海量数据下,对 MySQL 或 Oracle 进行模糊查询或条件查询的效率是很低的。而搜索功能在绝大多数项目中都是必须的,如何提升搜索效率是很多互联网项目必须要考虑的问题。 既然使用关系型数据库进行搜索效率比较低&a…

UML入门以及Plant UML工具介绍

简介 UML,Unified Modeling Language,可视化的统一建模语言,是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。而非程序设计语言,支持从需求分析开始的软件…

UML工具 Astah Professional8.0下载

UML工具 Astah Professional8.0下载 开头功能特性使用方法 文件下载链接 开头 由于Astah目前社区版被取消了,在这提供Professional 8.0版本。 Astah官网:https://astah.net/ 功能特性 1、在一个工具中做所有事情 不要为每个工作阶段切换工具。 做UML设…

免费 UML 工具

选取了四款UML工具: astah 经常看到网上的黄色背景就是这个软件画的,最后一个免费的社区版本是:astah community 7.2 安装包大小50M 以下三个均为免费版本: Software Ideas Modeler 可以画序列图,安装包很小,只有十几兆,而且提供便携版下载 Modelio 这是一个大型的…

十二个开源UML工具

本文将为您介绍12个优秀的UML工具: 1. StarUML StarUML(简称SU),是一种创建UML类图,是一种生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj)。 2. Netbeans UML Plugin 目前支持&…

UML工具Visual Paradigm入门:业务流程建模 (BPM) 教程

Visual Paradigm是包含设计共享、线框图和数据库设计新特性的企业项目设计工具。现在你只需要这样单独的一款模型软件 Visual Paradigm就可以完成用UML设计软件,用BPMN去执行业务流程分析,用ERD企业设计数据库的任务。Visual Paradigm现已加入在线订购&a…

UML图及UML工具使用技巧

转自:UML图及UML工具使用技巧 Rational Rose 2003 之“Rational License key error”问题的解决方案 大家对UML这个可视化的建模语言应该不在陌生了。五种关系、九种图是UML的核心组成元素,而Rational Rose 是实现这些关系、图的重要工具。工具的重要性…

推荐Ubuntu使用UML工具-Drawio

最近在找一个免费的,漂亮的又能在ubuntu上使用的uml工具 先上一张图 网上搜索可以使用命令安装,个人没使用过 sudo snap install drawiosnap官网介绍:https://snapcraft.io/drawio 个人推荐直接在github直接下载最新版本的安装包 drawio的…

小瞥linux下UML工具

原文地址:https://blog.csdn.net/wangdingqiaoit/article/details/11991459 学习设计模式时,希望能好好练习类图,因此需要UML工具,linux下有很多uml工具,这里小瞥一眼,做个了解,并不打算并不全…

c++源码逆向UML工具踩坑

最近考虑走读一些源码,需要对源码类图结构关系首先有个大概了解,否则实在啃不下去,研究了几款逆向工具 个人MAC机,CSDN明确有几款,包括EA, starUML,Rational Rose ,Visual Paradigm 试了下Cr…

UML工具(1)-Umbrello

1、UML是统一建模语言,是一种可视化的语言。 2、各类工具对比。 工具名称 优点 缺点 Rational Rose 功能全,可以正向和逆向工程 收费&#xff0…

Uml工具StarUML破解

1、下载安装包 地址:http://staruml.io/download 2、安装,很简单,双击下载的包就可以安装了 3、破解(这里需要Nodejs的环境,如果你不是个程序员,没有环境,就先装个环境) 3.1 安装…

免费的UML工具

今天我想介绍一个100%完全免费的UML工具, 请不要认为Visual Paradigm Community Edition是一个免费工具,你猜它不够好 事实上,它多次获得国际奖项 - 其一个中国际奖项甚至击败IBM和 Borland国际震动奖(Jolt Award) Download Here在这里下载 Visual Paradigm社区版 - 免费的 U…

免费且好用的UML工具推荐

免费且好用的UML工具推荐 1、引言 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,是非专利的第三代建模和规约语言。UML使用面向对象设计的的建模工具,但独立于任何具体…

UML建模工具

1、不收费的 编号软件名称软件连接备注1draw.io2eclipse的3亿图4Papyrushttp://www.eclipse.org/papyrus1、 支持UML 2.5但是UML官方没有UML2.5只有2.5.1;2、绘制UML 用例图当前个人没找到系统边界5StartUML6jetumlhttps://www.jetuml.org/ 2、收费的(…

用于敏捷开发的免费 UML 工具 2022

敏捷时代的UML:为什么它仍然有意义? 它取决于目标系统的大小和复杂性: 建造一个狗屋可以由一个人完成。它涉及一个简单的过程,使用诸如钉子、锤子、锯子、胶带等基本工具执行。在几个小时内,您就可以为狗建造一座房子…

UML工具

UML 工具 draw.io desktop (https://www.draw.io/) wiki中插件draw.ioprocessonplantuml idea插件(代码生成)graphvizyEd 架构图 定义:描述系统的业务/服务之间的逻辑关系 技巧:1. 虚线划分边界 2.颜色表示状态/角色 3.同一角色背景色相同 4.核心交互…

UML画图工具汇总

最近学习了UML,搜集了一把各类的画图工具以及它们的特点。最后选出我认为最好用的一款工具。 rose 《大象》书里面就是用的这款软件,但是这个貌似要钱,破解版版本很低,界面看起来也比较复古。不推荐。 star uml 挺有名的软件&…

UML建模工具最近更新汇总(-2022年7月)共16款:Visual State、UML Diagrammer……

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> UMLChina整理的UML建模工具列表请见http://www.umlchina.com/tools/search.aspx 最近一段时间更新: 工具最新版本:GoJS 2.2.12 更新时间&#xff…