Solr搭建教程
环境:solr-6.6.6
1.解压安装运行
tar -zxf solr-6.6.6.tgz
mv solr-6.6.6 /opt
cd /opt/solr-6.6.6
./bin/solr start -p 8983
[^]: root用户输入命令时需要加 -force
2.打开浏览器查看是否启动成功
http://ip:8983/
3.创建core
./bin/solr create -c test
4.安装IK分词器
-
下载 ikanalyzer-solr5 自行百度
-
将目录下的2个jar包赋值到/opt/solr-6.6.6/server/solr-webapp/webapp/WEB-INF/lib下
-
编辑/opt/solr-6.6.6/server/solr/test/conf目录下的managed-schema文件
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" useSmart="false"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
<analyzer type="query" useSmart="true"
class="org.wltea.analyzer.lucene.IKAnalyzer" />
</fieldType>
- 重启服务
./bin/solr restart
- 打开控制台,选择Core->Analysis,输入中文,选择ik分词器,点击分析按钮,如下图所示
5.Solr配置Mysql数据源
-
新建数据表并添加测试数据
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `age` int(11) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, '张三', 12); INSERT INTO `user` VALUES (2, '李四', 15); INSERT INTO `user` VALUES (3, '王五', 14); INSERT INTO `user` VALUES (4, '丁六', 1); SET FOREIGN_KEY_CHECKS = 1;
-
创建一个新Core
./bin/solr create -c mysql
-
将mysql的驱动mysql-connector-java-5.1.48.jar和**/opt/solr-6.6.6/dist/目录下的solr-dataimporthandler-6.6.6.jar和solr-dataimporthandler-extras-6.6.6.jar拷贝到/opt/solr-6.6.6/server/solr-webapp/webapp/WEB-INF/lib**目录下
cp dist/solr-dataimporthandler*.jar server/solr-webapp/webapp/WEB-INF/lib/
-
修改/opt/solr-6.6.6/server/solr/mysql/conf/solrconfig.xml,在“<!-- SearchHandler”之前加入
<requestHandler name="/dataimport" class="solr.DataImportHandler"> <lst name="defaults"> <str name="config">db-data-config.xml</str> <!--在当前目录新建该文件--> </lst> </requestHandler> <!-- SearchHandler
在70~80行左右引入jar,否则会报不识别DataImportHandler的问题
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />
-
在config目录下新建db-data-config.xml,就是上面solrconfig.xml中配置的config文件
<dataConfig> <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/springboot" user="root" password="root" /> <document> <entity name="user" query="select * from user" deltaImportQuery="select * from user where id = '${dih.delta.id}'" > <field column="id" name="id" /> <field column="name" name="name" /> <field column="age" name="age" /> </entity> </document> </dataConfig>
- query:查询数据库表符合记录数据
- deltaQuery:增量索引查询主键ID 注意这个只能返回ID字段 ,这里未用到
- deltaImportQuery:增量索引查询导入的数据
- column:表的列名,name:solr中定义的索引名
-
修改config目录下的managed-schema文件,在120行左右加入定义的Entity里的字段说明,name不可重复
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> <!-- doc values are enabled by default for primitive types such as long so we don't index the version field --> <field name="_version_" type="long" indexed="false" stored="false"/> <field name="_root_" type="string" indexed="true" stored="false" docValues="false" /> <field name="_text_" type="text_general" indexed="true" stored="false" multiValued="true"/> <!--新增以下field--> <field name="name" type="string" indexed="true" stored="true"/> <field name="age" type="string" indexed="true" stored="true"/>
-
重启服务
./bin/solr restart
-
打开管理页面,选择mysql->DataInport,点击Execute,为数据库中的数据在Solr中创建索引
-
选择mysql->query,点击Execute Query,即可查询到数据库中的数据