1.准备软件
jdk8
最新solr页面https://lucene.apache.org/solr/mirrors-solr-latest-redir.html
下载https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/8.5.2/solr-8.5.2.tgz
我用的盘是:/home/peiyajie
2.安装:
解压:tar -zxvf solr-8.5.2.tgz
./bin/solr start
即可访问:http://10.217.37.28:8983/solr然后出现solr管理页面
3.新建core及导入数据,就相当于不同的数据库
在路径/home/peiyajie/solr-8.5.2/server/solr下面新建peiyajieCore
然后复制配置
cp -rf /home/peiyajie/solr-8.5.2/server/solr/configsets/_default/conf /home/peiyajie/solr-8.5.2/server/solr/peiyajieCore
在conf文件夹下面新建文件data-config.xml并赋予内容
<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource name="smartcare"
type="JdbcDataSource"
driver="com.mysql.cj.jdbc.Driver"
url="jdbc:mysql://10.217.56.131:3306/iem?serverTimezone=Asia/Shanghai&characterEncoding=utf8&allowMultiQueries=true&useSSL=false"
user="brt"
password="brt123456" />
<document>
<entity name="role" dataSource="smartcare" query="select role_id,role_name,role_code from sys_role">
<field column="role_id" name="roleId"/>
<field column="role_name" name="roleName"/>
<field column="role_code" name="roleCode"/>
</entity>
</document>
</dataConfig>
在solrconfig.xml文件里面的/select上面新增
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
还有导入数据和mysql连接的jar
/home/peiyajie/solr-8.5.2/dist 的solr-dataimporthandler-8.5.2.jar 和solr-dataimporthandler-extras-8.5.2.jar复制到
/home/peiyajie/solr-8.5.2/server/solr-webapp/webapp/WEB-INF/lib
mysql-connector-java-8.0.19.jar和数据库匹配的连接jar
重启服务既可以完成数据导入
第一次用全量,第二次用增量接口
4.加入中文分析器及高亮配置
分析器jar
cp /home/peiyajie/solr-8.5.2/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-8.5.2.jar /home/peiyajie/solr-8.5.2/server/solr-webapp/webapp/WEB-INF/lib
managed-schema文件里面新增
<field name="roleId" type="pint" indexed="true" stored="true"/>
<field name="roleName" type="text_ik" indexed="true" stored="true"/>
<field name="roleCode" type="string" indexed="true" stored="true"/>
<field name="keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="roleName" dest="keywords"/>
<fieldType name="text_ik" 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>
重新启动,删除原来数据完成,导入数据功能,即可高亮显示
总结:高亮就是根据查询,将结果相关结果特殊字体展示,没有中文分析器也可以完成,只是不进行单词拆分高亮
如果单词拆分高亮,就应该将type="text_ik"这个值
对于copyfeild就相当与组合的作用,将一个属性组合成多个,然后集体高亮展示。
高亮属性 stored="true"一定为true
复合copy的查询:
https://blog.youkuaiyun.com/qq_37334135/article/details/76849602