Lucene Solr 安装与使用
下载solr的压缩包
tar -xzf solr-8.1.1.tgz cd /usr/local/solr-8.1.1 # 不建议使用管理员启动 solr,加 -force 强制启动 bin/solr start -force # 开放 8983 端口 firewall-cmd --zone=public --add-port=8983/tcp --permanent firewall-cmd --reload
这个即为启动成功,如果保存则可能是你电脑内存不足,查看电脑可用内存,关掉一些应用即可
访问solr控制台:http://192.168.64.170:8983
新建目录,保存索引,数据库中 pd_item 表中的商品数据, 在 solr 中保存索引数据, 一类数据, 在 solr 中创建一个 core 保存索引数据,创建一个名为 pd 的 core, 首先要准备以下目录结构:
# solr目录/server/solr/ # pd/ # conf/ # data/ cd /usr/local/solr-8.1.1 mkdir server/solr/pd mkdir server/solr/pd/conf mkdir server/solr/pd/data
复制默认的配置
cd /usr/local/solr-8.1.1 cp -r server/solr/configsets/_default/conf server/solr/pd
创建pd的core
测试中文分词:
中文分词工具 - ik-analyzer
https://github.com/magese/ik-analyzer-solr
下载 ik-analyzer 分词 jar 文件,传到 solr目录/server/solr-webapp/webapp/WEB-INF/lib
ik-analyzer-8.1.0.jar mysql-connector-java-5.1.46.jar solr-dataimporthandler-8.1.1.jar solr-dataimporthandler-extras-8.1.1.jar
复制6个文件到 solr目录/server/solr-webapp/webapp/WEB-INF/classes(资料2)
# classes目录如果不存在,需要创建该目录 mkdir /usr/local/solr-8.1.1/server/solr-webapp/webapp/WEB-INF/classes
这6个文件复制到 classes 目录下 resources/ IKAnalyzer.cfg.xml ext.dic stopword.dic stopwords.txt ik.conf dynamicdic.txt
修改 solr目录/server/solr/pd/conf/managed-schema
,添加 ik-analyzer 分词器
<!-- 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
cd /usr/local/solr-8.1.1 bin/solr restart -force
再次测试,选择使用text_ik
设置停止词
上传停止词配置文件到 solr目录/server/solr-webapp/webapp/WEB-INF/classes
stopword.dic
stopwords.txt
在重启服务
准备mysql
授予 root 用户 跨网络访问权限
注意: 此处设置的是远程登录的 root 用户,本机登录的 root 用户密码不变
grant all on *.* to 'root'@'%' identified by 'root';
将表的字段进行设置,比如这儿商品有title和price
查询时需要按字段查询,例如 title:电脑
, 可以将多个字段的值合并到一个字段进行查询,默认查询字段 _text_
将 title 和 sellPoint 复制到 _text_
字段
添加jar文件,存放在solr目录的dist下(资料三)
solr-dataimporthandler-8.1.1.jar solr-dataimporthandler-extras-8.1.1.jar
复制这两个文件和 mysql 的 jar 文件到 solr目录/server/solr-webapp/webapp/WEB-INF/lib
修改 mysql 的 ip 地址,传到solr目录/server/solr/pd/conf有下面两个文件
dih-config.xml内容:
<dataConfig> <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://192.168.64.1:3306/pd_store" user="root" password="root" batchSize="100" autoCommit="false" /> <document name="item"> <entity name="item" pk="id" query="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item" deltaQuery="SELECT id,title,sell_point sellPoint,price,barcode,image,cid,`status`,created,updated FROM pd_item WHERE updated > date_add(str_to_date('${dih.last_index_time}','%Y-%m-%d %H:%i:%s'),interval 8 hour)" transformer="RegexTransformer"> </entity> </document> </dataConfig>
在solrconfig.xml 中添加 DIH 配置
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">dih-config.xml</str> </lst> </requestHandler>
重启solr
bin/solr restart -force
出现5则说明连接数据库成功