Solr(一) Solr 简介及搜索原理
一、 Solr 简介
1 为什么使用 Solr
在海量数据下,对 MySQL 或 Oracle 进行模糊查询或条件查询的效率是很低的。而搜索功能在绝大多数项目中都是必须的,如何提升搜索效率是很多互联网项目必须要考虑的问题。
既然使用关系型数据库进行搜索效率比较低,最直接的解决方案就是使用专用搜索工具进行搜索,从而提升搜索效率。
2 常见搜索解决方案
基于 Apache Lucene(全文检索工具库)实现搜索。但是 Lucene 的使用对于绝大多数的程序员都是“噩梦级”的。
基于谷歌 API 实现搜索。
基于百度 API 实现搜索。
3 Solr 简介
Solr 是基于 Apache Lucene 构建的用于搜索和分析的开源解决方案。可提供可扩展索引、搜索功能、高亮显示和文字解析功能。
Solr 本质就是一个 Java web 项目,且内嵌了 Jetty 服务器,所以安装起来非常方便。客户端操作 Solr 的过程和平时我们所写项目一样,就是请求 Solr 中控制器,处理完数据后把结果响应给客户端。
4 正向索引和反向索引
只要讨论搜索就不得不提的两个概念:正向索引(forward index)和反向索引(inverted index)。
正向索引:从文档内容到词组的过程。每次搜索的时候需要搜索所有文档,每个文档比较搜索条件和词组。
文档 | 词组 |
I am a chinese | I,am,a,chinses |
反向索引:是正向索引的逆向。建立词组和文档的映射关系。通过找到词组就能找到文档内容。(和新华字典找字很像)
词组 | 文档 |
I,am,a,chinses | I am a chinese |
二、 Solr 搜索原理
1 搜索原理
Solr 能够提升检索效率的主要原因就是分词和索引(反向索引)。
分词:会对搜索条件/存储内容进行分词,分成日常所使用的词语。
索引:存储在 Solr 中内容会按照程序员的要求来是否建立索引。如果要求建立索引会把存储内容中关键字(分词)建立索引。
2 Solr 中数据存储说明
Solr 为了给内容建立索引,所以 Solr 就必须具备数据存储能力。所有需要被搜索的内容都需要存储在 Solr 中,在开发中需要把数据库中数据添加到 Solr 中进行初始化,每次修改数据库中数据还需要同步 Solr 中的数据。
Solr 中数据存储是存储在 Document 对象中,对象中可以包含的属性和属性类型都定义在 schema.xml 中。如果需要自定义属性或自定义属性类型都需要修改 schema.xml 配置文件。从 Solr5 开始 schema.xml 更改名称为 managed-schema(没有扩展名)
Solr(一) Solr 简介及搜索原理相关推荐
- Solr空间搜索原理分析与实践
前言 在美团CRM系统中,搜索商家的效率与公司的销售额息息相关,为了让BD们更便捷又直观地去搜索商家,美团CRM技术团队基于Solr提供了空间搜索功能,其中移动端周边商家搜索和PC端的地图模式搜索功能 ...
- 二、Solr搜索原理
1.搜索原理 Solr能够提升检索效率的主要原因就是分词和索引(反向索引,通过). 分词:会对搜索条件/存储内容进行分词,分成日常所使用的词语. 索引:存储在Solr中内容会按照程序员的要求来是否建立 ...
- Java Solr:(二)Solr 搜索原理
Solr 搜索原理 1.搜索原理 2.Solr 中数据存储说明 1.搜索原理 Solr 能够提升检索效率的主要原因就是分词和索引(反向索引). 分词:会对搜索条件/存储内容进行分词,分成日常所使用的词 ...
- 【solr】solr介绍
什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引 ...
- Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级.万亿条数据记录的检索工作,这里向大家分享下Lucene底层原理研究和一些优化经验. 从两个方面介绍: 1. Lucene简介和索 ...
- Java爬虫搜索原理实现
permike 原文 Java爬虫搜索原理实现 没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优 ...
- Solr 11 - Solr集群模式的部署(基于Solr 4.10.4搭建SolrCloud)
目录 1 SolrCloud结构说明 2 环境的安装 2.1 环境说明 2.2 部署并启动ZooKeeper集群 2.3 部署Solr单机服务 2.4 添加Solr的索引库 3 部署Solr集群服务( ...
- 原理简介_消息通信的利器MQTT协议简介及协议原理
- 没用过但是必须得知道系列 - 前言: 相比于 XMPP, MQTT 的简单轻量受到了不少工程师的喜爱,从物联网到传统的消息服务,简单可依赖的 MQTT 到底为何让人如此着迷呢? MQTT 协议-M ...
- 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理
简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...
- linux环境下如何查看solr版本,Solr环境搭建(linux)
1. 前言 在5.0版本之前,solr无法作为独立的服务器进行使用,需要将其打包为war包部署在任何Servlet容器内才能使用. 从5.0开始,solr可以单独作为一个独立的Java应用服务器分发使 ...
最新文章
- DAMS2019中国数据智能管理峰会将于7月在上海召开!
- 一种全新的点击率建模方案
- HDU 5238 Calculator 线段树 中国剩余定理
- html table列平均,html table 列求和
- background-size属性
- python微信语音转发方法_微信怎么转发语音(想要转到别的群或者人这样做)
- 《统计会犯错——如何避免数据分析中的统计陷阱》一导读
- QQ钱包的接入及其设计分析
- 理光GR Android wifi,理光gr2wifi怎么用
- 名词解释微型计算机,微机原理名词解释
- 华硕路由桥接模式进入不了界面
- 【Linux】Linux内核数据结构:IDR(redix树)
- 电商教程,制作淘宝产品常见的风效果
- 【Lerna 基本使用】
- word排版案例报告_导师:论文排版都搞不好,你拿什么去投稿?!
- 分享新手电商(淘宝、拼多多、楚楚街)上货经验
- Flutter 全能型选手GetX —— 状态管理
- mysql触发器不起作用_mysql – 授予模式触发器不起作用
- 墨画子卿第三章第9节:是一个人
- 制作“大白菜”启动U盘教程