一、solr安装
1、官网下载最新版的solr
官网地址:https://solr.apache.org/downloads.html
上传压缩包到服务器,解压压缩包 将解压后的文件下移动到自己的目录下
tar -zxvf solr-8.10.1.tgz
mv solr-8.10.1 /usr/local/
2、solr单机服务启动
cd 至solr文件夹下 进入到bin目录 启动服务 默认IP为8983 调整防火墙IP
solr start -force #启动服务
打开http://172.xx.xx.xx:8983/solr/
二、新建core
1、复制configsets/_default/conf 到新建的core目录下 pe_book为新建的core
cp -rf solr-8.10.1/server/solr/configsets/_default/conf solr-8.10.1/server/solr/pe_book/
2、新建core
三、中文分词插件安装
1、solr8 自带分词工具
在slor的 solr-8.10.1/contrib/analysis-extras/lucene-libs 目录下 找到lucene-analyzers-smartcn-8.10.1.jar cp 到 webapp 路径的lib 下 路径为 solr-8.10.1/server/solr-webapp/webapp/WEB-INF/lib
配置文件managed-schema 增加配置
<!-- ChineseAnalyzer 自带的中文分词器 -->
<fieldType name="solr_cnAnalyzer" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>
这样就配置好了 类型名称是 solr_cnAnalyzer 的分词器。
2、solr8 ikanalyzer分词器配置
ikanalyzer分词下载地址 https://mvnrepository.com/artifact/com.github.magese/ik-analyzer/8.3.0
jar 包放到这个位置: solr-8.10.1\server\solr-webapp\webapp\WEB-INF\lib
配置文件managed-schema 增加配置
<!-- ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
重启solr服务 验证是否成功
四、数据库数据导入
1、导入相关包:
在创建的核心目录下新建lib文件夹(如果有,无需建立),从Solr源码包的dist文件夹中导入两个solr-dataimporthandler包(solr-8.10.1/dist),以及一个mysql驱动包。
cp solr-8.10.1/dist/solr-dataimporthandler-8.10.1.jar solr-8.10.1/server/solr-webapp/webapp/WEB-INF/lib
2、编辑core中conf下的solrconfig文件 在文件末尾添加以下内容
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
然后再本目录下的data-config.xml进行如下编辑(没有则创建)
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<!-- 数据库信息 -->
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/college_service"
user="root" password="mysql"/>
<document>
<!-- document实体 -->
<entity name="news" query="SELECT * FROM news">
<!-- 数据库字段映射solr字段 -->
<field column="news_id" name="id"/>
<field column="news_authorid" name="newsAuthorid"/>
<field column="news_title" name="newsTitle"/>
<field column="news_cover" name="newsCover"/>
<field column="news_time" name="newsTime"/>
<field column="news_browse" name="newsBrowse"/>
<field column="news_schoolid" name="newsSchoolid"/>
<field column="news_categoryid" name="newsCategoryid"/>
<field column="news_abstract" name="newsAbstract"/>
<field column="news_content" name="newsContent"/>
</entity>
</document>
</dataConfig>
然后在当前路径的managed-schema文件中加入相应的类型映射
<!--自定义的域-->
<field name="newsAuthorid" type="string" indexed="true" stored="true"/>
<field name="newsTitle" type="string" indexed="true" stored="true" />
<field name="newsCover" type="string" indexed="false" stored="true" />
<field name="newsTime" type="pdate" indexed="false" stored="true" />
<field name="newsBrowse" type="pint" indexed="false" stored="true" />
<field name="newsSchoolid" type="string" indexed="false" stored="true"/>
<field name="newsCategoryid" type="string" indexed="false" stored="true" />
<field name="newsAbstract" type="text_ik" indexed="true" stored="true" />
<field name="newsContent" type="text_general" indexed="false" stored="true" />
登陆http://localhost:8983/solr/,进入以下模块,执行excute就导入数据了,没反应过来可以进行refresh status