1.solr介绍
solr是apache旗下开源项目,主要用于文档创建索引,查询的一个工程,基于lucene进行封装开发,具有可视化操作页面
2.安装solr
地址:http://mirror.bit.edu.cn/apache/lucene/solr/6.4.2
3.目录结构
- bin:启动脚本目录
- contrib:
- dist:编译完的jar存放位置
- docs:文档
- example
- licenses
- server:solr主服务目录
4.server文件夹介绍
- etc:jetty配置
- lib
- logs
- resources: log4j配置文件等
- scripts: mapreduce和集群脚本
- solr: solr的collection位置及配置文件
- solr-webapp: solr的h5页面部分
5.配置solr
在solr目录下创建collection的文件夹,例如
# cd /solr-version-path/server/solr
# mkdir collection1
拷贝主要配置文件到collection1文件夹里
# cd /solr-version-path/server/solr
# cp configsets/basic_configs/conf ../
#
修改solrconfig配置文件
在文件中加入数据库连接requestHandler ,并指定配置文件
<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 version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource name="jdbc"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://192.168.0.252:3306/***?characterEncoding=utf8&useUnicode=true"
user="root" password="****" batchSize="-1"/>
<document name="data">
<entity name="crawldata" pk="id" query="sql">
<!-- 配置数据库字段和solr字段的映射关系 -->
<field name="id" column="id" />
</entity >
</document >
</dataSource >
</dataConfig>
修改managed-schema配置文件,配置solr字段,之后solr查询的所有字段都从该文件中指定,不能查询没有指定的字段
<!-- name:字段名称, type:字段类型, indexed:是否索引, strored:打分 required:是否必须,multiValued:是否多值 -->
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<!-- 配置ik分词器 -->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
<!--配置IK分词器同义词-->
<fieldType name="text_syn" class="solr.TextField">
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
ik分词器位置:
ik分词器词库需要自己整理
6.启动solr(默认8983端口)
# cd /solr-version-path/bin
# ./solr start -force