solr7
安装
下载
http://apache.fayea.com/lucene/solr/
我选了7.4.0最新的,
网上还有很多人用5或者6的,因为分词不支持什么的,其实是支持的,都有了。
另外不同版本确实安装步骤不是完全一样。下载和配置 tomcat和jdk
略配置
1、解压 solr-7.4.0.tgz 换个名字叫solr7
2、将server/solr-webapp/webapp 重新命名solr,并复制到tomcat/webapps下面
3、tomcat/webapps/solr/WEB-INF 下建立一个文件夹 classes
4、新建一个文件夹,不要中文目录,用来做solrHome,也就是solrCore的实例存放位置,我就建在solr7下面
mkdir solr_home
5、tomcat/webapp/solr/WEB-INF/web.xml 配置solr/home 吧注释去掉,然后路径改掉
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/usr/local/api/solr7/solr_home</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
6、 复制server/resource/log4j.properties 到刚刚建立的classes 文件夹
其实是log4j2.xml
7、把solr7/server/lib/ext/ 下的jar包复制到tomcat/webbapps/solr/WEB-INF/lib/中
8、把solr7/dist下面的jar包也复制过去
9、solr7/server/lib下面的metrics开头的也复制过去
10、将 /webapps/solr/WEB-INF 下面的 web.xml 最尾巴上的
分词
下载https://github.com/magese/ik-analyzer-solr7
自己maven打包 成 ik-analyzer-solr7-7.x.jar
tomcat/webapp/solr/WEB-INF/lib里面。
(千万不要复制到tomcat/lib中,这样会找不到lucene的类)
添加 vi solr7/solr_home/new_core/core1/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>
页面咋操作,见https://www.cnblogs.com/zhuxiaojie/p/5764680.html 我就不贴图了
域的定义 field
具体使用和语法,看其他blog,这边不再复制一遍
但是我困惑了很久,到底是个啥东西,title就可以,title1就不行,我也没配过,
后来发现managed-schema (老版本schema.xml) 预设了很多字段
id,name,context。。。。。很多
title1 不行,是因配置文件里面没有,-_-||
dataimport 数据库
mysql-connector-java-5.1.42.jar 放到
/usr/local/api/tomcat8-10080-solr/webapps/solr/WEB-INF/lib
还有solr/dist/ 下面的solr-dataimporthandler-7.4.0.jar 也放过去
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>
<dataConfig>
<!-- 这是mysql的配置,学会jdbc的都应该看得懂 -->
<dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/solr/useUnicode=true&characterEncoding=utf-8" user="bbtang" password="bbtang"/>
<document>
<!-- name属性,就代表着一个文档,可以随便命名 -->
<!-- query是一条sql,代表在数据库查找出来的数据 -->
<entity name="product" query="select * from products">
<!-- 每一个field映射着数据库中列与文档中的域,column是数据库列,name是solr的域(必须是在
**managed-schema**文件中配置过的域才行) -->
<field column="pid" name="id"/>
<field column="name" name="product_name"/>
<field column="catalog" name="product_catalog"/>
<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>
ps: xml里面 &要写成 &