Linux搭建Solr检索
下载solr
开始安装
- 上传下载的solr-9.2.1.tgz包到/usr/local下;
- 解压
tar -zxvf solr-9.2.1.tgz
- 启动服务
// 切换到bin目录
cd /usr/local/solr/bin
// 启动服务
./solr start -force
// 停止服务
./solr stop -all
- 可能存在问题
访问IP:8983/solr,发现拒绝连接问题
linux 启动solr服务提示Your open file limit is currently 1024
编辑/etc/security/limits.conf文件,在最后追加如下代码保存。
* hard nofile 65535
* soft nofile 65535
* hard nproc 65535
* soft nproc 65535
创建实例
在/usr/local/solr/bin下执行命令
./solr create -c 实例名称 -force
页面刷新查看
mysql数据导入solr
- 导入jar包
将源文件下dist目录下的两个solr-dataimporthandler-xxxxx.jar包,以及一个mysql驱动包复制
到/usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib 目录中。 - 创建数据库配置文件
在/usr/local/solr/server/solr/实例名 目录下创建data-config.xml文件
<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://ip:3306/数据库名称?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8" user="用户名" password="密码" />
<document>
<entity name="policy"
query="SELECT
id,
title,
date,
policy_number,
policy_source,
preview,
content,
category,
is_recommend,
clicks,
search_volume,
create_by,
create_time,
update_by,
update_time,
remark
FROM
t_policy">
<!-- 数据库字段映射solr字段 -->
<field column="id" name="id" />
<field column="title" name="title" />
<field column="date" name="date" />
<field column="policy_number" name="policyNumber" />
<field column="policy_source" name="policySource" />
<field column="preview" name="preview" />
<field column="category" name="category" />
<field column="is_recommend" name="isRecommend" />
<field column="clicks" name="clicks" />
<field column="search_volume" name="searchVolume" />
<field column="create_by" name="createBy" />
<field column="create_time" name="createTime" />
<field column="update_by" name="updateBy" />
<field column="update_time" name="updateTime" />
<field column="remark" name="remark" />
</entity>
</document>
</dataConfig>
编辑/usr/local/solr/server/solr/实例名/conf目录下solrconfig.xml文件,追加如下代码。
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
- 数据导入
配置完成后重新启动solr,导入数据。
ik中文分词器配置
- ik分词器下载
链接:https://pan.baidu.com/s/1RWv-aThkpz2vgL1wCj0T7Q
提取码:ypmn - 配置
在/usr/local/solr/server/solr-webapp/webapp/WEB-INF目录下创建classes文件;
用解压文件打开分词器jar包将这五个文件复制到创建的classes目录下。
将分词器jar包放入/usr/local/solr/server/solr-webapp/webapp/WEB-INF/lib目录下;
编辑/usr/local/solr/server/solr/实例名/conf目录下managed-schema文件,在最后追加如下代码。
<!-- ik中文分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" conf="ik.conf" useSmart="false"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" conf="ik.conf" useSmart="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
配置业务字段
需要用到分词的字段,type属性改为text_ik。
<!-- 对象字段映射 -->
<field name="title" type="text_ik" indexed="true" stored="true"/>
<field name="date" type="pdate"/>
<field name="policyNumber" type="string"/>
<field name="policySource" type="string"/>
<field name="preview" type="string"/>
<field name="content" type="text_ik" indexed="true" stored="true"/>
<field name="category" type="pint"/>
<field name="isRecommend" type="boolean"/>
<field name="clicks" type="pint" indexed="true" stored="true"/>
<field name="searchVolume" type="pint" indexed="true" stored="true"/>
<field name="createBy" type="string"/>
<field name="createTime" type="pdate"/>
<field name="updateBy" type="text_ik"/>
<field name="updateTime" type="pdate"/>
<field name="remark" type="string"/>
- 测试
重启solr;
选择添加的ik中文分词器执行。
删除全部数据
<delete>
<query>*:*</query>
</delete>
<commit/>