一、 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 简介及搜索原理相关推荐

  1. Solr空间搜索原理分析与实践

    前言 在美团CRM系统中,搜索商家的效率与公司的销售额息息相关,为了让BD们更便捷又直观地去搜索商家,美团CRM技术团队基于Solr提供了空间搜索功能,其中移动端周边商家搜索和PC端的地图模式搜索功能 ...

  2. 二、Solr搜索原理

    1.搜索原理 Solr能够提升检索效率的主要原因就是分词和索引(反向索引,通过). 分词:会对搜索条件/存储内容进行分词,分成日常所使用的词语. 索引:存储在Solr中内容会按照程序员的要求来是否建立 ...

  3. Java Solr:(二)Solr 搜索原理

    Solr 搜索原理 1.搜索原理 2.Solr 中数据存储说明 1.搜索原理 Solr 能够提升检索效率的主要原因就是分词和索引(反向索引). 分词:会对搜索条件/存储内容进行分词,分成日常所使用的词 ...

  4. 【solr】solr介绍

    什么是Solr Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器.Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展,并对索引 ...

  5. Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理

    基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB级.万亿条数据记录的检索工作,这里向大家分享下Lucene底层原理研究和一些优化经验. 从两个方面介绍: 1. Lucene简介和索 ...

  6. Java爬虫搜索原理实现

    permike 原文 Java爬虫搜索原理实现 没事做,又研究了一下爬虫搜索,两三天时间总算是把原理闹的差不多了,基本实现了爬虫搜索的原理,本次实现还是俩程序,分别是按广度优先和深度优先完成的,广度优 ...

  7. Solr 11 - Solr集群模式的部署(基于Solr 4.10.4搭建SolrCloud)

    目录 1 SolrCloud结构说明 2 环境的安装 2.1 环境说明 2.2 部署并启动ZooKeeper集群 2.3 部署Solr单机服务 2.4 添加Solr的索引库 3 部署Solr集群服务( ...

  8. 原理简介_消息通信的利器MQTT协议简介及协议原理

    - 没用过但是必须得知道系列 - 前言: 相比于 XMPP, MQTT 的简单轻量受到了不少工程师的喜爱,从物联网到传统的消息服务,简单可依赖的 MQTT 到底为何让人如此着迷呢? MQTT 协议-M ...

  9. 简介DOTNET 编译原理 简介DOTNET 编译原理 简介DOTNET 编译原理

    简介DOTNET 编译原理 相信大家都使用过 Dotnet ,可能还有不少高手.不过我还要讲讲Dotnet的基础知识,Dotnet的编译原理. Dotnet是一种建立在虚拟机上执行的语言,它直接生成 ...

  10. linux环境下如何查看solr版本,Solr环境搭建(linux)

    1. 前言 在5.0版本之前,solr无法作为独立的服务器进行使用,需要将其打包为war包部署在任何Servlet容器内才能使用. 从5.0开始,solr可以单独作为一个独立的Java应用服务器分发使 ...

最新文章

  1. DAMS2019中国数据智能管理峰会将于7月在上海召开!
  2. 一种全新的点击率建模方案
  3. HDU 5238 Calculator 线段树 中国剩余定理
  4. html table列平均,html table 列求和
  5. background-size属性
  6. python微信语音转发方法_微信怎么转发语音(想要转到别的群或者人这样做)
  7. 《统计会犯错——如何避免数据分析中的统计陷阱》一导读
  8. QQ钱包的接入及其设计分析
  9. 理光GR Android wifi,理光gr2wifi怎么用
  10. 名词解释微型计算机,微机原理名词解释
  11. 华硕路由桥接模式进入不了界面
  12. 【Linux】Linux内核数据结构:IDR(redix树)
  13. 电商教程,制作淘宝产品常见的风效果
  14. 【Lerna 基本使用】
  15. word排版案例报告_导师:论文排版都搞不好,你拿什么去投稿?!
  16. 分享新手电商(淘宝、拼多多、楚楚街)上货经验
  17. Flutter 全能型选手GetX —— 状态管理
  18. mysql触发器不起作用_mysql – 授予模式触发器不起作用
  19. 墨画子卿第三章第9节:是一个人
  20. 制作“大白菜”启动U盘教程

热门文章

  1. JSP程序设计课后习题答案
  2. Foobar2000是一款完全可定制的音乐播放器
  3. 【Oracle教程资源大合集】Oracle数据库免费学习资源汇总
  4. 【Android】ListView 控件的简单使用
  5. Java项目:在线购书商城系统(java+jsp+mysql+servlert+ajax)
  6. 天学网 语音算法工程师面经
  7. 制作粉色少女系列 生日快乐祝福网页(HTML+CSS+JS)
  8. 惠普打印机故障代码_HP激光打印机常见故障代码
  9. 数学建模四大模型总结
  10. Web前端性能优化策略