一、前言

  前面已经学习了Lucene的分词、索引详解、搜索详解的知识,已经知道开发一个搜索引擎的流程了。现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的搜索引擎封装成一个组件或者独立成一个单独的服务给其他系统使用了。目前市面上已经有基于Lucene的成熟的稳定的搜索引擎服务,例如Solr和ElasticSearch,如果没有特殊需求我们就可以直接拿过来使用,不需要自己再取开发一套了。下面我们就来介绍一下Solr。

二、Solr介绍

1. Solr是什么

  基于Lucene的流行、高性能的开源企业级搜索平台。Lucene下的子项目。 官网链接: https://lucene.apache.org/solr

2. Solr的用途

  独立地提供全文搜索服务

3. Solr的特性

3.1、独立的企业级搜索服务,基于http以类-REST API 对外提供服务

  你可以通过http协议将文档以JSON/XML/CSV/binary格式发送给Solr进行索引。

  你通过http GET 请求进行查询,可返回JSON/XML/CSV/binary格式的搜索结果。

3.2、近实时的索引能力

  文档数据提交索引后,立马就可看到。

3.3、先进的全文检索能力

  基于Lucene的强大搜索能力,支持任意数据类型的短语、通配、连接、分组等等查询

3.4、综合的管理界面

  Slor内建了综合的管理用户界面,让你方便的管理你的solr实例

3.5、通过简单的配置方式来提供高灵活性、适用性

3.6、高伸缩和容错能力

  基于zookeeper,solr支持分布式、备份、再平衡,来提供高伸缩和容错能力

3.7、插件体系架构,易扩展

  Solr发布了许多定义良好的扩展点,这使得插件很容易插入索引和查询时的过程中。

三、Solr应用架构

要在系统中使用Solr只需完成以下三个步骤即可:

1、在solr中定义一个schema(模式),来告诉solr你要索引的文档document由哪些Field构成。

2、将需要让用户搜索的文档发送给solr

3、在你的应用中公开搜索功能。应用的搜索功能通过调用Solr的搜索API实现。

四、Solr安装、使用

1. Solr 下载

从官网下载最新版本http://mirrors.hust.edu.cn/apache/lucene/solr/7.3.0/

这里下载的windows版本的

2. 系统环境要求

JDK1.8

操作系统:Linux, MacOS/OS X, and Microsoft Windows

3. 安装准备

Solr的安装很简单,只需解压到安装目录。但在安装之前针对你的使用环境:开发、测试、生产,需要进行一个评估,来决定是在独立的机器上部署单应用服务; 还是需要分布式集群。

特别是在生产环境部署时,需认真评估需要的服务规模。考量因素:

  文档的数量、结构

  要存储的字段数量

  用户数量

  影响硬件规模的因素

Lucene的严格限制: 单个索引中的最大文档数: 约2.14 billion documents (约21.4亿,2,147,483,647 )

实际中不可能在单个索引中达到这个文档数量级还运行良好,在到达这个数量之前早就会用分布式索引集群。如果在部署时,就能估计出将达到如此量级,就应该用solrCloud分布式集群方式安装。

4. 安装

将安装包解压到安装目录即可。

Linux系统下解压命令: tar zxf solr-7.3.0.tgz

Solr目录说明:

5. 独立服务器模式启动Solr

Linux: bin/solr start

Windows: bin\solr.cmd start

默认端口: 8983

查看Solr是否在运行的命令: bin/solr status

6. solr的相关命令

在命令行下,直接 solr.cmd 回车,查看命令的使用帮助说明

输入 solr.cmd start –help    详细了解它的选项

7. Solr 管理控制台介绍

http://localhost:8983/solr/

8. Solr core 介绍

内核:是运行在Solr服务器中的具体唯一命名的、可管理和可配置的索引。

一台solr服务器可以托管一个或多个内核。

疑问:内核就是索引,为什么需要多个内核?

  答案:不同的文档拥有不同的模式(字段构成、索引、存储方式),如商品数据和新闻数据就有不同的字段构成以及不同的字段索引、存储方式。就需要分别用两个内核来索引、存储它们。

内核的典型用途:区分不同模式的文档

9. 创建内核

方式一:web管理控制台加载已存在的内核

方式二:命令行命令创建一个新的内核

-d 选项可选值有两个:

_default 默认值,最少配置;

sample_techproducts_cnofigs 示例的配置

分别用它们创建一个内核:

solr.cmd create_core –c mycore

solr.cmd create_core -c techproducts –d sample_techproducts_configs

10. 在web管理控制台查看创建的内核

核心有了,但它是空的,搞点数据进去,来试试搜索吧

在solr的example目录下有不少示例数据。把它们搞进去:

用post命令:

Linux/Mac solr-7.3.0:$ bin/post -c techproducts example/exampledocs/*

Windows solr-7.3.0> java -jar -Dc=techproducts -Dauto example\exampledocs\post.jar example\exampledocs\*

请注意看它的输出信息!然后到web管理控制台,看下 techproducts核心有多少个文档。试试搜索!

11. 在左侧菜单切换搜索试一下

12. 提交一个文档

{
"id" : "2010-010154888",
"cat" : ["book","paperback"],
"name" : "I love solr",
"author" : "leeSmall",
"sequence_i" : 1,
"genre_s" : "IT",
"inStock" : true,
"price" : 130.50,
"pages_i" : 475
}

14. 我们的系统如何使用Solr?

  通过http请求向solr提交查询数据

Solr系列一:Solr(Solr介绍、Solr应用架构、Solr安装使用)的更多相关文章

  1. Solr系列二:solr-部署详解(solr两种部署模式介绍、独立服务器模式详解、SolrCloud分布式集群模式详解)

    一.solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud  分布式集群模式:适用于数据规模大,高可靠.高可用.高并发的场景 二.独 ...

  2. solr系列之solr-5.5.5 window单机版默认Jetty安装

    Solr5.5.5单机部署 Solr5和Solr4有很大区别,最为明显的就是Solr5已经可以独立部署,从Solr5开始,Solr已经不再以war包形式部署,Solr已经成为了一个独立的java服务端 ...

  3. dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo

    一.dubbo介绍 Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC实现服务的输出和输入功能,可以和Spring框架无缝集成.简单地说,dubbo是一个基于Spri ...

  4. LYNC2013介绍和基础架构准备角色

    LYNC2013部署系列PART1:LYNC2013介绍和基础架构准备 前言:LYNC 2013发布已经很久了,本人一直在进行相关的学习和测试,在有限的资源条件下,把能够模拟出来的角色进行了安装部署, ...

  5. Solr系列五:solr搜索详解(solr搜索流程介绍、查询语法及解析器详解)

    一.solr搜索流程介绍 1. 前面我们已经学习过Lucene搜索的流程,让我们再来回顾一下 流程说明: 首先获取用户输入的查询串,使用查询解析器QueryParser解析查询串生成查询对象Query ...

  6. Solr系列三:solr索引详解(Schema介绍、字段定义详解、Schema API 介绍)

    一.Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段.字段的数据类型.字段该索引存储. 2. Schema 的定义方式 ...

  7. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  8. Solr系列一:Solr与Tomcat的整合

    第一次尝试着去写一个系列的教程,希望自己能坚持下去,也希望自己能够通过博客的编写来加深自己对solr搜索的理解. Solr与Tomcat的整合网上有很多教程,我就以我的整合为例来讲述一下我的整合过程, ...

  9. Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用

    学习Solr前需要有Lucene的基础 Lucene的一些简单用法:https://www.cnblogs.com/dddyyy/p/9842760.html 1.部署Solr到Tomcat(Wind ...

随机推荐

  1. Python2.7 fabric理论学习

    在python中有一个可以实现批量管理服务器的工具:fabric,在本地和远程机器上提供了一些基本的操作,并且可以上传/下载文件.执行sudo等功能. 学习环境:ubuntu 12.10+python ...

  2. pyspark实现自动提示以及代码高亮

    pyspark实现自动提示以及代码高亮 起因 打开pyspark发现啥提示都没有,太不友好了啊,然后忍不住谷歌了一下,发现了这篇文章,内容如下: 1.pip install ptpython; 2.e ...

  3. 【转】关于 SELECT /*!40001 SQL_NO_CACHE */ * FROM 的解惑

    由于 在数据库做了缓存,在对数据库做了备份,然后在慢查询日志中发现了这一串字符: SELECT /*!40001 SQL_NO_CACHE */ * FROM 上网查了一下,发现好多答案,好多人说的都 ...

  4. opencv项目报错_pFirstBlock==pHead解决办法

    备注: 我上次遇到这个问题的原因是项目设置为MTd导致的 OpenCV是MTd的,我要是改成MDd就编译报错,所以不能采用把项目改为MDd的办法,只能把OpenCV重新编译为MDd的,下载CMAKE, ...

  5. 总结: Sort 排序算法

    排序总结 面试经验 硅谷某前沿小Startup面试时,问到的一个题目就是写一个快速排序算法.进而面试官问到了各种算法的算法复杂度,进而又问了Merge Sort 与 QuickSort 的优劣. 对排 ...

  6. [转载]生活在 Emacs 中

    Brian Bilbrey2002 年 8 月 20 日发布 教程简介 本教程讲什么? Emacs 是一个流行的无模式文本编辑器,有许多强大的功能.本教程将教您使用 Emacs 的基础知识.为了让您很 ...

  7. splitter 使用

    splitter1.Width = ; splitter1.Height = ; Label l = new Label(); l.Text = "···"; //写入的字,具体指 ...

  8. Mysql注入绕过姿势

    1.内联绕过 2.编码绕过,如URLEncode编码,ASCII,HEX,unicode编码绕过 or 1=1即%6f%72%20%31%3d%31,而Test也可以为CHAR(101)+CHAR(9 ...

  9. java框架篇---struts实现拦截器

    Struts2的拦截器和Servlet过滤器类似.在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept ...

  10. mac 系统中vim安装ctags插件

    1,mac自带的ctags程序不是exuberant ctags, 所以使用时会出现问题,所以要重新安装一个: brew install exuberant ctags 安装完, which ctag ...