1.安装jdk、tomcat
2.解压solr压缩包
3.复制solr/dist的solr.war并部署到tomcat并启动tomcat,
使用tail -f logs/catalina.out查看日志可以看到成功解压
4.源码中example/lib/ext下的日志依赖jar包复制到tomcat的工程中去
pwd查看当前完整路径 复制当前文件夹下的所有文件:cp * path 复制所有到路径中
5.创建solrhome:将example文件夹下的solr复制到tomcat的同级目录并改名为solrhome
需要修改的配置文件是:/solrhome/conllection1/conf/schema.xml和solrconfig.xml
6.修改项目中的web.xml中
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>放入solrhome的路径</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
6.启动tomcat
访问http://192.168.25.3:8040/solr
7.配置中文分析器
IK Analyzer 2012FF_hf1下的三个文件
IKAnalyzer2012FF_u1.jar jar包加入项目的lib文件夹中
两个词典 mydict.dic ext_stopword.dic 一个配置文件 IKAnalyzer.cfg.xml 放入WEB-INF目录下新建的classes文件夹中
修改schema.xml文件,在最后添加name不重复即可
需要自定义一个FieldType。Schema.xml中定义。可以在FieldType中指定中文分析器。
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
8.自定义业务域
确定搜索的sql语句
例如:
1 SELECT 2 a.id, 3 a.title, 4 a.sell_point, 5 a.price, 6 a.image, 7 b.`name` category_name, 8 c.item_desc 9 FROM 10 tb_item a 11 LEFT JOIN tb_item_cat b ON a.cid = b.id 12 LEFT JOIN tb_item_desc c ON a.id = c.item_id 13 WHERE 14 a.`status` = 1
sql语句
<field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_sell_point" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="long" indexed="true" stored="true"/> <field name="item_image" type="string" indexed="false" stored="true" /> <field name="item_category_name" type="string" indexed="true" stored="true" /> <field name="item_desc" type="text_ik" indexed="true" stored="false" /> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/> <copyField source="item_sell_point" dest="item_keywords"/> <copyField source="item_category_name" dest="item_keywords"/> <copyField source="item_desc" dest="item_keywords"/>
schema.xml中插入
SELECT
a.id,
a.title,
a.sell_point,
a.price,
a.image,
b.`name` category_name,
c.item_desc
FROM
tb_item a
LEFT JOIN tb_item_cat b ON a.cid = b.id
LEFT JOIN tb_item_desc c ON a.id = c.item_id
WHERE
a.`status` = 1
根据id删除document:
<delete>
<id>change.me</id>
</delete>
<commit/>