solr 读音应该是叫 “so lar”
之前写过一篇介绍solr的文章https://zhangdianlei.github.io/2018/09/11/Apache-Solr/ ,这里就不再啰嗦solr的事情了。今天搞了一天的solr,现在记录一下
solr安装及使用:
- Linux环境下安装
- 添加环境变量
- 启动solr,简单了解solr
- 新建Core
- 从数据库导入数据
- 数据查询
下面详解介绍每一部分。
Linux环境下安装solr
要求: 电脑上已经装了jdk8+
下载:建一个工作文件夹,执行下载命令:
1 | wget http://mirrors.shuosc.org/apache/lucene/solr/7.4.0/solr-7.4.0.tgz |
解压安装:
1 | tar -zxvf solr-7.4.0.tgz |
添加环境变量
将solr添加到环境变量,可以快速的启动、重启、关闭等,非常有必要。
编辑文件:
1 | vim /etc/profile |
下面是我的配置:
1 | export JAVA_HOME=/root/software/jdk1.8.0_181 |
然后执行:
1 | source /etc/profile |
使得配置文件生效
然后可以执行以下命令验证配置成功:
1 | solr start |
启动solr,简单了解solr
启动、重启、关闭命令:
1 | solr start |
有时系统因安全问题考虑,可能需要在命令后加上1
2
3
4
5
6
7
8
9
10
11
12
13
14
solr启动后,访问 ```http://ip:8983/solr```之后,将访问web管理界面:
<img src="https://ws1.sinaimg.cn/large/006tNbRwly1fvg4qwbplfj31bl0hu42d.jpg" width=800px height=300px />
### 新建Core
每个人新建Core的方法,和配置方法都不一样,在此,仅记录我的创建和配置方法。
<img src="https://ws1.sinaimg.cn/large/006tNbRwly1fvg4yqgmxxj30yx0b6jtj.jpg" width=800px height=250px />
先在 ```Core Admin --> Add Core```确认添加,会报一个找不到文件的错误,然后这时候,需要将标准配置文件,添加到刚才新增的Core下面,标准配置文件在 ```~SolrDir/server/solr/configsets/_default/conf```下面,假设当前目录为solr根文件夹下,新的Core名字为```new_core```,执行:
cp -r server/solr/configsets/_default/conf server/solr/new_core1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
新建```Core```完成!
### 导入数据库数据
在上一步导入的Conf目录下,修改以下配置:
在 ```solrconfig.xml```下添加以下配置,添加位置大约在 680行,```SearchHandler```配置上面:
```xml
<!-- Request Handlers
http://wiki.apache.org/solr/SolrRequestHandler
Incoming queries will be dispatched to a specific handler by name
based on the path specified in the request.
If a Request Handler is declared with startup="lazy", then it will
not be initialized until the first request that uses it.
-->
<!-- add property -->
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<!-- SearchHandler
http://wiki.apache.org/solr/SearchHandler
For processing Search Queries, the primary Request Handler
provided with Solr is "SearchHandler" It delegates to a sequent
of SearchComponents (see below) and supports distributed
queries across multiple shards
-->
1 |
|
这里,需要添加用到的驱动包,用到什么驱动下载什么,可以从mvn库下载(https://mvnrepository.com/),将数据连接驱动包下载之后,放到1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
简单说一下这三个query的作用:
**query:** 在全量导入时使用
**deltaImportQuery:**在增量导入时执行,其中的id来自于 **deltaQuery** 的查询结果。
在这之后,需要配置```managed-schema```文件,与数据库进行映射,在117行附近,添加与数据库的映射,具体添加规则,不详细写了。
```xml
<field name="_root_" type="string" indexed="true" stored="false" docValues="false" />
<field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/>
<!-- add propertity -->
<field name="invoice_type" type="text_ik" indexed="true" stored="true" />
<field name="invoice_code" type="string" indexed="true" stored="true" />
<field name="invoice_num" type="string" indexed="true" stored="true" />
为了查询的效果,需要再配一下中文分词器,将下面配置放到其中,位置大约在358行:
1 | <fieldType name="text_gen_sort" class="solr.SortableTextField" positionIncrementGap="100" multiValued="true"> |
当然,需要将中文分词包加到项目中,参考这篇文章吧: https://blog.csdn.net/guyan0319/article/details/81188977
数据查询
在solr的web管理界面上,可以执行测试query,具体的每个字段如何查,参考这篇文章:https://blog.csdn.net/sxg0205/article/details/81317563