1 solr的下载
从Solr官方网站(http://archive.apache.org/dist/lucene/solr/7.3.1/ )下载Solr最新版本,
根据Solr的运行环境,Linux下需要下载solr-7.3.1.tgz,windows下需要下载solr-7.3.1.zip。
2 solr的环境
Solr是java开发的,在windows上面和Linux上面的安装一样。
windows上面的安装教程可以参照:http://www.cnblogs.com/jepson6669/p/9053880.html
1.需要安装jdk【需要jdk1.8及以上版本】
2.安装环境CentOS7
3.需要安装tomcat(非必需,可以使用内置的小服务器jetty)
我的环境:
Solr:Solr7.3.1
Jdk:1.8.0_162
Tomcat:apache-tomcat-8.5.31
3 安装过程
第一步:把solr的压缩包上传到Linux系统
第二步:在usr/local/创建solr目录
# mkdir /usr/local/solr
第三步:解压solr到刚刚创建的solr目录下
[root@i soft]# tar -xvf solr-7.3.1.tgz -C /usr/local/solr
第四步:解压解压tomcat到solr目录下
[root@i soft]# tar -xvf apache-tomcat-8.5.31.tar.gz -C /usr/local/solr
第五步:把 solr\solr-7.3.1\server\solr-webapp下的 webapp 文件夹拷贝到tomcat 的webapps下,重命名为solr7,也可以是其他名字
[root@iz solr-webapp]# cp -r webapp /usr/local/solr/apache-tomcat-8.5.31/webapps/
# mv webapp solr7
第六步:拷贝solr-7.3.1\server\lib\ext 下的jar包到 tomcat\webapps\solr7 项目的WEB-INF\lib下
[root@i ext]# cp * /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
第七步:拷贝solr-7.3.1\server\lib\目录下gmetric4j-1.0.7.jar,以及以metrics开头的jar包拷贝到WEB-INF\lib下
[root@i lib]# cp gmetric4j-1.0.7.jar /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
[root@iz lib]# cp metrics-*.* /usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/lib/
另外还需要拷贝/usr/local/solr/solr/dist下面的以solr-dataimporthandler开头的jar包WEB-INF\lib下
[root@ dist]# cp /usr/local/solr/solr/dist/solr-dataimporthandler-*.* /usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib/
第八步:拷贝solr-7.3.1\server 下的solr文件夹到/usr/local/solr目录下,重命名为solrhome。
[root@i server]# cp -r solr /usr/local/solr/
[root@iz solr]# mv solr solrhome
第九步:关联solr和solrhome.需要修改tomcat\webapps\ solr7\WEB-INF\web.xml
第十步:解决日志不能够正常显示问题
1.在/sor7/WEB-INF/下面创建一个classes文件夹
2.拷贝solr7.3.1\server\resources下的log4j.properties到刚刚创建的classes目录下。
3.在/usr/local/solr/创建一个logs文件夹
4.修改log4j.properties文件
第十一步:修改tomcat的端口,避免冲突
第十二步:启动tomcat,访问solr时后面记得加上“index.hmtl”
4 HTTP Status 403 – Forbidden解决
修改/usr/local/solr/apache-tomcat-8.5.31/webapps/solr7/WEB-INF/web.xml文件。
然后重启tomcat.
然后访问终于看到了欢迎页面:
这也就是说明安装成功了。
5 不能添加核心的解决
1 事故现场
name:自定义的名字,建议和instanceDir保持一致
instanceDir:solrhome目录下的示例类目
dataDir:默认填data即可
config:指定配置文件,/usr/local/solrhome/new_core/conf/solrconfig.xml
schema:指定schema.xml文件,new_core/conf/schema文件(实际上是managed-schema文件)
注意!在schema.xml下面有一个感叹号!
如果你不管他,直接点击Add Core会提示solrconfig.xml文件找不到
2 事故解决
第一步:进入到solrhome/new_core目录,复制/solr-7.3.1/server/solr/configsets/_default/conf文件夹到new_core目录下。
[root@i new_core]# cp -r /usr/local/solr/solr-7.3.1/server/solr/configsets/_default/conf ./
第二步:切换到solrhome目录,复制/usr/local/solr/solr-7.3.1/contrib文件夹到solrhome目录下。
[root@i solrhome]# cp -r /usr/local/solr/solr-7.3.1/contrib/ ./
第三步: 复制solr-7.3.1/dist文件夹到solrhome目录下
[root@iz2ze7k6ycnx8b40ynghxtz solrhome]# cp -r /usr/local/solr/solr-7.3.1/dist/ ./
第四步:修改核心配置文件solrhome/new_core/conf/solrconfig.xml,
主要是修改contrib目录,dist目录的相对位置。
<lib dir="${solr.install.dir:..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-cell-\d.*\.jar" /> <lib dir="${solr.install.dir:..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-clustering-\d.*\.jar" /> <lib dir="${solr.install.dir:..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-langid-\d.*\.jar" /> <lib dir="${solr.install.dir:..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:..}/dist/" regex="solr-velocity-\d.*\.jar" />
第五步:重启服务即可正常创建Core,然后instanceDir文件夹(new_core)里会自动生成一个core.properties文件。
new_core文件夹里面的内容如下:
core.properties文件中的内容如下:
到这里就解决了不能添加核心问题。
3 补充
以后再次需要创建solrCore核心的时候,就不用这么麻烦了。
可以直接复制第一创建的new_core目录,修改core.properties文件中的name即可。
6 ikanalyzer 中文分词器
准备好Ikanalyzer文件,目录结构如下:
里面包括IK Analyzer 2个架包:ik-analyzer-solr5-5.x.jar、solr-analyzer-ik-5.1.0.jar
IK配置文件 IKAnalyzer.cfg.xml、ext.dic、stopword.dic
第一步:拷贝ik-analyzer-solr5-5.x.jar到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目录下面
第二步:拷贝ext.dic ,stopword.dic,ikAnalyzer.cfg.xml到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/classes目录下面。
前面的安装过程中我已经创建过classes目录,如果没有的话,创建一个。
ikAnalyzer.cfg.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">ext.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">stopword.dic;</entry> </properties>
ext.dic里面添加新词汇:比如“王者荣耀”这类的。
stopword.dic里面添加不需要分词的词语,比如 “的 了 个 你 我 他”
第三步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件。
1.添加一个自定义的fieldType
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
2.定义一个field,指定field的Type属性为text_ik
<!--IKAnalyzer Field-->
<field name="title_ik" type="text_ik" indexed="true" stored="true" />
<field name="content_ik" type="text_ik" indexed="true" stored="false" multiValued="true"/>
配置完成后的效果如下:
第四步:重启tomcat,让配置生效。
第五步:测试
7 拼音分词器的安装
首先需要准备好拼音分词器所需的jar包。
另外还需要用到第六步的ikanalyzer 中文分词器里面的一个jar包。
第一步:将solr-analyzer-ik-5.1.0.jar,pinyinAnalyzer4.3.1.jar,pinyin4j-2.5.0.jar三个jar包
导入到/usr/local/solr/tomcat/webapps/solr7/WEB-INF/lib目录下面。
第二步:修改/usr/local/solr/solrhome/new_core/conf下面的managed-schema文件
在其中加入下面的内容
<!-- IK 拼音分词 -->
<fieldType name="text_pinyin" class="solr.TextField" positionIncrementGap="0">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.ik.IKTokenizerFactory"/>
<filter class="com.shentong.search.analyzers.PinyinTransformTokenFilterFactory" minTermLenght="2" />
<filter class="com.shentong.search.analyzers.PinyinNGramTokenFilterFactory" minGram="1" maxGram="20" />
</analyzer>
</fieldType>
第三步:重启tomcat,查看效果
8 使用dataimport插件批量导入数据
配置前的效果
第一步:把dataimport插件的依赖的jar包添加到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下,lib目录没有就创建一个
jar包的位置:
第二步:导入数据库的驱动包到/usr/local/solr/solrhome/contrib/dataimporthandler/lib下
数据的jar包需要自己去找。
一二两步后的效果:
第三步:修改/usr/local/solr/solrhome/new_core/conf下面的solrconfig.xml配置文件,添加一个requestHandler
<lib dir="${solr.install.dir:..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<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文件保存到/usr/local/solr/solrhome/new_core/conf目录下
# vim data-config.xml
里面的内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://39.105.94.154:3306/lucene"
user="tom"
password="tom"/>
<document>
<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog_name" name="product_catalog_name"/>
<field column="price" name="product_price"/>
<field column="description" name="product_description"/>
<field column="picture" name="product_picture"/>
</entity>
</document>
</dataConfig>
dataSource和entity里面的内容根据自己的实际情况修改.
对于没有的域需要自己配置。
<!--product-->
<field name="product_name" type="text_ik" indexed="true" stored="true"/>
<field name="product_price" type="float" indexed="true" stored="true"/>
<field name="product_description" type="text_ik" indexed="true" stored="false" />
<field name="product_picture" type="string" indexed="false" stored="true" />
<field name="product_catalog_name" type="string" indexed="true" stored="true" /> <field name="product_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="product_name" dest="product_keywords"/>
<copyField source="product_description" dest="product_keywords"/>
在managed-schema文件中加入上面的代码,效果如下
第五步:重启tomcat,让配置生效。
第六步:点击Execute按钮导入数据。
勾选Auto-Refresh Status 可以自动刷新,看到导入的状态
导入数据前会先清空索引库,然后再导入。