文档章节

Solr实战(一):了解与安装

Skqing
 Skqing
发布于 2017/04/20 16:09
字数 1647
阅读 114
收藏 0

一、需求

有这样一个表:

需要根据关键字“上下班”搜索数据,我们用SQL实现的做法通常是这样的:

SELECT * FROM `t_test` WHERE title LIKE '%上下班%';

但是如果要把desc字段也加进去呢?

SELECT * FROM `lv_travel` WHERE title LIKE '%上下班%' OR descr LIKE '%上下班%';

如果我有三四个这样的字段呢?会有更多的LIKE,有更多的LIKE意味着低的效率,更大的数据库开支。

并且关键是有很多业务需求无法实现,例如要查询关键字“大慈大悲”,不但要包含“大慈大悲”这个几个字查询处理,包含“大慈”关键字的也要查询出来,包含“大悲”的也要查询出来,这就是LIKE模糊查询无法实现的。

缺点很明显:

  1. 模糊查询性能极低,当数据量庞大的时候,往往会使数据库服务中断;
  2. 数据库开支非常大;
  3. 效率很低;
  4. 不能复用(除非做缓存)
  5. 无法实现更为复杂的查询;

因此,需要搭建专门提供搜索功能的服务,具备分词、全文检索等高级功能。 Solr 就是这样一款搜索引擎,可以让你快速搭建适用于自己业务的搜索服务。

 

二、安装

官网下载相应的安装包,目前是6.5版本。

solr-6.5.0-src.tgz      2017-03-22 05:42   41M  源码需要自己编译
solr-6.5.0.tgz          2017-03-22 05:42  142M   编译之后的代码,适合Linux
solr-6.5.0.zip          2017-03-22 05:42  143M   编译之后的代码,时候Windows

我们今天要安装的是Windows版本的,因为是第一次用,比较容易上手,熟悉了之后可以转到Linux上去,毕竟正式产品环境肯定是Linux。

下载下来解压之后的目录结构如下:

我们进到bin目录,打开cmd执行命令:solr start

就可以启动solr管理界面了,如图:

 

Dashboard:仪表盘,显示solr的相关信息

Logging:solr的日志

Core Admin:仓库管理

Java Properties:Java参数配置信息

Thead Dump:线程状态

 

三、建立索引库

solr管理后台启动之后我们需要建立自己的索引仓库,你可以在管理后台新建一个仓库,如图:

也可以手动复制配置文件,然后做一下改动,重启之后solr会自动加载你的新仓库,我们这里只说第二种方式。首先在solr-6.5.0\server\solr目录下新建一个文件夹名字自定,例如:new_core,然后把solr-6.5.0\server\solr\configsets\basic_configs\conf路径下的所有文件复制到new_core目录下面,如图:

然后重启solr就能看到我们新建的索引仓库了,如图:

选择我们的仓库就会出现以下功能,如图:

四、创建索引

这样还没结束,因为我们的仓库里什么都没有,所以我们需要导入数据到仓库里,接下来就是要吧我们自己数据库里面的数据导入到仓库里并且建立索引,然后才能使用索引进行搜索。这里我们使用的是mysql数据库,其他数据库也大致一样。

  1. 下载mysql数据库驱动mysql-connector-java-5.1.40-bin.jar放到solr-6.5.0\server\solr-webapp\webapp\WEB-INF\lib目录下面
  2. 从solr-6.5.0\dist目录复制solr-dataimporthandler-6.5.0.jar和solr-dataimporthandler-extras-6.5.0.jar两个jar到solr-6.5.0\server\solr-webapp\webapp\WEB-INF\lib目录下面

然后对solrconfig.xml文件进行配置:

修改索引文件目录

<dataDir>${solr.data.dir:E:\data\solr_home\shangpin}</dataDir>

指定我们数据库导入的配置文件(6.5默认有这个节点就不需要添加了,除非自己需要修改配置文件名称,否则不需要改动)

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

既然指定了数据库导入的配置文件路径和名称那接下来就需要对数据库配置文件dataimport-config.xml进行配置了

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
    <dataSource
	name="name1"
	type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.31.211:3306/mytest"
	user="root"
	password="123456" />
  <document name="goodsDoc">
        <entity dataSource="name1" name="t_goods" pk="id"
			query="select id,title,subtitle,(select title from t_category c where c.id=g.categoryId) as category from t_goods g where g.state = 1">
			
         <field column="id" name="id"/>
         <field column="title" name="title"/>
            <field column="subtitle" name="subtitle"/>	
			<field column="category" name="category"/>	
     </entity>
  </document>
</dataConfig>

这个配置大家应该一看就懂吧,把数据库字段影射为solr属性,要注意两个name1的名称要一样,因为在这个配置文件里是可以配置多个数据源的,更复杂的配置可以参考官方文档。

在导入数据之前我们还需要配置索引映射文件,在6.0之前可以手动在schema.xml里面配置,6.5的时候需要在管理后台手动配置,如图:

相对应的,solr会在solr-6.5.0\server\solr\new_core\conf生成一个managed-schema配置文件,这个文件里记录了索引映射的关系。

首先,需要了解 Solr 中的两个概念: 字段(field) 和 字段类型(fieldType),如图:

field 指定一个字段的名称、是否索引/存储和字段类型。

fieldType 指定一个字段类型的名称以及在查询/索引的时候可能用到的分词插件。

default 指定一个默认值

并且你在dataimport-config.xml中配置了几个字段相应的就需要在后台的Schema中配置几个字段:

这样才能建立好对应关系。

 

五、导入数据

接下来就需要从数据库导入数据了,如图:

选择Dataimport菜单,然后选择full-import命令,entity选择你刚才在dataimport-config.xml配置的entity name然后点击Execute就可以了,导入之后点击    Overview菜单查看:

如果红框的地方不为0说明正常导入了,接下来就可以试一下查询了,点击Query菜单:

点击Execute Query就能看到全部查询结果:

然后我们可以试着做简单的条件过滤:

本篇就到此结束了,接下来将去学习solr的查询。

 

 

相关问题:

Solr 6.0 没有schema.xml未自动创建schema文件

 

参考资料:

http://www.jianshu.com/p/3d64412f8c40

https://my.oschina.net/helloworld1991/blog/717948

Linux(CentOS)上安装使用solr6.X

Solr 配置文件之schema.xml

Solr中配置文件schema.xml之copyField 与multiValued用途

http://www.kailing.pub/article/index/arcid/149.html

http://blog.csdn.net/zrl0506/article/details/64922759

© 著作权归作者所有

Skqing

Skqing

粉丝 39
博文 206
码字总数 26375
作品 0
深圳
后端工程师
私信 提问
solr-集群安装搭建-入门

0,下载安装源码,solr的官网是 :http://lucene.apache.org/solr/ 1,解压出 源码中的安装脚本。假如 安装源码是: solr-5.4.0.tgz,那么执行命令是: tar -zxvf solr-5.4.0.tgz solr-5.4....

岸芷汀兰
2015/12/31
111
0
一年走向【Java架构师】之葵花宝典

大多数时候,不是我们不努力,而是不知从何下手,我深知一份好的学习资料是多么的重要,我们通常会把大量的时间都浪费在找资源上,本人搜集学习java架构师的经典学习路线如下可供参考!!! 一...

我一路狂奔
2017/05/20
625
1
搜索引擎(Solr配置管理详解)

学习目标 掌握在生产环境中安装配置solr 掌握solr的安全配置 掌握solr的集合管理 应用于生产 在linux系统上安装solrCloud 1.依赖: JRE solr7.3 需要 java1.8 独立的zookeeper服务 ,zookeep...

这很耳东先生
03/07
94
0
Elasticsearch初探(1)——基本介绍与环境搭建

版权声明:本文版权归Jitwxs所有,欢迎转载,但未经作者同意必须保留原文链接。 https://blog.csdn.net/yuanlaijike/article/details/82966110 一、Elasticsearch简介 1.1 什么是Elasticsear...

Jitwxs
2018/10/08
0
0
Solr学习总结(五)SolrNet的基本用法及CURD

  上一篇已经讲到了Solr 查询的相关的参数。这里在讲讲C#是如何通过客户端请求和接受solr服务器的数据, 这里推荐使用SolrNet,主要是:SolrNet使用非常方便,而且用户众多,一直都在更新,...

章为忠
2015/12/24
0
0

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
今天
4
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
今天
8
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
今天
4
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
今天
6
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
今天
6
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部