Solr专题(一)手把手教你搭建Solr服务

摘要:
Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。完成后重启solr服务,再进入solr的admin界面进行添加Core添加成功后,文件夹里会多出两个文件进入自己建立的core进行管理:至此,Solr服务的搭建已经成功了,接下来是运用教程。stored表示是否存到Solr库。下一节将会对SolrQuery进行一个详细的讲解。
一、Solr是什么,能解决什么问题?

Solr是一个高性能,采用Java开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

简而言之就是在项目中可以作为搜索引擎,提供资源的高效查询。

Q:数据库不是能提供查询的接口吗?为什么要用额外的框架来做?

A:因为模糊查询不能使用数据库的索引,所以数据库提供的模糊查询效率很低。而Solr本身也可以看做是数据库(no sql)类似于MongoDB存文档数据的菲关系型数据库。许多大型网站的搜索引擎绝不是通过查询数据库来做的,而是由Solr、Elasticsearch 这样的全文检索框架来负责。

二、同类型产品比较

全文检索框架还有ElasticSearch,它们两者之间的区别如下:

  • Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
  • Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
  • Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;
  • Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch。
  • Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。
三、搭建服务

本例中Solr版本为7.7.2

1.下载Solr

官方下载网站:https://lucene.apache.org/solr/downloads.html

2.版本变更记录

参考博文: https://blog.csdn.net/jiangchao858/article/details/52443745

说明:Solr从5.0.0开始内嵌jetty服务器,可直接启动,之前版本需依赖外部容器(tomcat、jetty...)中启动。

3.安装与启动

免安装,下载解压即用。

常用命令:

  • 启动:solr start
  • 停止:solr stop -p 8983
  • 重启:solrrestart

启动方式:找到bin目录,在地址栏输入cmd,打开命令界面

Solr专题(一)手把手教你搭建Solr服务第1张Solr专题(一)手把手教你搭建Solr服务第2张

输入solr start,使用默认端口启用jetty服务。

Solr专题(一)手把手教你搭建Solr服务第3张Solr专题(一)手把手教你搭建Solr服务第2张

在浏览器输入localhost:8983/solr查看效果

Solr专题(一)手把手教你搭建Solr服务第5张Solr专题(一)手把手教你搭建Solr服务第2张

4、建立core

core就相当于数据库中的表,用来存放数据。

在/server/solr下新建一个文件夹,文件夹的名称就是core的名称,再将/server/solr/configsets/sample_techproducts_configs中的conf文件夹复制到新建的文件夹下。

Solr专题(一)手把手教你搭建Solr服务第7张Solr专题(一)手把手教你搭建Solr服务第2张

完成后重启solr服务,再进入solr的admin界面进行添加Core

Solr专题(一)手把手教你搭建Solr服务第9张Solr专题(一)手把手教你搭建Solr服务第2张

Solr专题(一)手把手教你搭建Solr服务第11张Solr专题(一)手把手教你搭建Solr服务第2张

添加成功后,文件夹里会多出两个文件(data、core.properties)

Solr专题(一)手把手教你搭建Solr服务第13张Solr专题(一)手把手教你搭建Solr服务第2张

进入自己建立的core进行管理:

Solr专题(一)手把手教你搭建Solr服务第15张Solr专题(一)手把手教你搭建Solr服务第2张

Solr专题(一)手把手教你搭建Solr服务第17张Solr专题(一)手把手教你搭建Solr服务第2张

至此,Solr服务的搭建已经成功了,接下来是运用教程。

5、导入数据

是指将数据库里面的数据导入到Solr中。

首先导入需要的jar包,将dist下的两个jar包复制到/server/solr-webapp/webapp/WEB-INF/lib文件夹下

Solr专题(一)手把手教你搭建Solr服务第19张Solr专题(一)手把手教你搭建Solr服务第2张

Solr专题(一)手把手教你搭建Solr服务第21张Solr专题(一)手把手教你搭建Solr服务第2张

在你自己的core里的conf下新建一个data-config.xml的配置文件。

<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&amp;characterEncoding=utf-8" user="root" password="root"/>
<document name="SysUser">
    <entity name="SysUser" pk="id"query='SELECT id,name,age FROM sys_suer'deltaImportQuery='SELECT id,name,age FROM sys_user WHERE id = "${dataimporter.delta.id}"'deltaQuery="SELECT id FROM sys_user where create_date > '${dataimporter.last_index_time}'" >
        <field column="id" name="id"/>
        <field column="name" name="name"/>
        <field column="age" name="age"/>
    </entity>
</document>
</dataConfig>
  • dataSource表示连接数据库的配置
  • document表示文档信息
  • entity表示实体信息
  • --query表示全量导入时调用的sql语句
  • --deltaImportQuery表示增量导入时调用的sql语句
  • --deltaQuery表示增量导入时查出来的数据
  • --field表示字段
  • --column表示数据库中字段名称
  • --name表示存在solr的core中的名称
  • ${dataimporter.last_index_time}表示最后一次导入数据的时间

具体流程:选择全量导入(全部数据导入)时调用query查询数据并导入到Solr中。选择增量导入时,先执行deltaQuery语句获得需要导入数据的id,再根据deltaImportQuery查出数据并导入到Solr中。

编辑你Core下的conf/managed-schema文件:

Solr专题(一)手把手教你搭建Solr服务第23张Solr专题(一)手把手教你搭建Solr服务第2张

  • indexed表示是否被索引,即是否被查询使用。
  • stored表示是否存到Solr库。
  • type表示搜索类型,当前为string类型的搜索,还可以自己配置,如IK中文分词器。

编辑core下conf/solrconfig.xml

新增以下内容

  <!-- dataimport -->
  <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
    </lst>
  </requestHandler>

Solr专题(一)手把手教你搭建Solr服务第25张Solr专题(一)手把手教你搭建Solr服务第2张

配好之后重启solr服务,并进入admin界面

Solr专题(一)手把手教你搭建Solr服务第27张Solr专题(一)手把手教你搭建Solr服务第2张

只有点击刷新状态按钮,才回刷新显示状态,出现Indexing completed则为导入完成。

Solr专题(一)手把手教你搭建Solr服务第29张Solr专题(一)手把手教你搭建Solr服务第2张

6、查询数据

Solr专题(一)手把手教你搭建Solr服务第31张Solr专题(一)手把手教你搭建Solr服务第2张

输入查询条件,点击执行查询,即可感受到全文检索的魅力。

下一节将会对Solr Query进行一个详细的讲解。

免责声明:文章转载自《Solr专题(一)手把手教你搭建Solr服务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux下操作PostgreSQL的常用命令QML动态创建自定义组件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

php集成环境

apache+php+mysql是常见php环境,在windows下也称为WAMP,对于初学者自选版本搭建总是会遇到一些麻烦,下面是收集到的一些集成环境安装: 1.AppServ (推荐,简洁精简) 主页http://www.appservnetwork.com/ 当前的两个版本是:2.5.102.6.0(点击版本号下载) AppServ是PHP网页架站工...

Cannot find module '@babel/core'

错误信息 error in ./src/main.js Syntax Error: Error: [BABEL] F:\webstorm_space\iwts\src\main.js: Cannot find module '@babel/core'Require stack: - F:\webstorm_space\iwts\node_module...

将 Excel 数据导入 SQL Server数据库

原文:https://docs.microsoft.com/zh-cn/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-2017#bulk-insert 适用于:SQL Server(所有支持的版本)  将 Excel 文件中的数据...

干货:数据库分库分表基础和实践

数据库架构的演变 在业务数据量比较少的时代,我们使用单机数据库就能满足业务使用,随着业务请求量越来越多,数据库中的数据量快速增加,这时单机数据库已经不能满足业务的性能要求,数据库主从复制架构随之应运而生。 主从复制是将数据库写操作和读操作进行分离,使用多个只读实例(slaver replication)负责处理读请求,主实例(master)负责处理写请求,...

Oracle系统表大全(转)

下面全面是对Oracle系统表的一些介绍: 数据字典dict总是属于Oracle用户sys的。   1、用户:    select username from dba_users;   改口令    alter user spgroup identified by spgtest;   2、表空间:    select * from dba_data_fi...

oracle 字符集

影响Oracle数据库字符集最重要的参数是NLS_LANG参数。 它的格式如下: NLS_LANG = language_territory.charset 它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。 其中: Language: 指定服务器消息的语言, 影响提示信息是中文还是英文 Territory: 指定服务器的日期和数字格...