solr的搭建自定义域。指定域的类型为自定义的FieldType。
一、单机版搭建(centOS6.4)
安装solr需要有Java环境和tomcat的存在
1、在/usr/local/目录下建立一个文件solr [root@localhost local]# mkdir solr
2、 将tomcat拷贝到新键的solr目录下,重命名 [root@localhost ~]# cp apache-tomcat-7.0.47 /usr/local/solr/tomcat -r
3、把解压的solr压缩包下面的dist中的solr-4.10.3.war拷贝到tomcat中 [root@localhost dist]# cp solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
4、解压缩war包。启动tomcat解压 [root@localhost tomcat]# bin/startup.sh
之后关闭 [root@localhost tomcat]# bin/shutdown.sh
5、把/root/solr-4.10.3/example/lib/ext目录下的所有jar拷贝到solr工程中 [root@localhost ext]# cp * /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
6、创建solrhome 把/root/solr-4.10.3/example下的solr文件夹复制作为solrhome [root@localhost example]# cp -r solr /usr/local/solr/solrhome
7、告知solr服务solrhome的位置,需要修改web.xml
<env-entry> <env-entry-name>solr/home</env-entry-name> <env-entry-value>/usr/local/solr/solrhome</env-entry-value> <env-entry-type>java.lang.String</env-entry-type> </env-entry>
8、启动tomcat
二、配置中文分析器、自定义业务域
2.1分析器使用IKAnalyzer。
使用方法:
第一步:把IKAnalyzer依赖的jar包添加到solr工程中。把分析器使用的扩展词典添加到classpath中。
1、[root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
2、在/usr/local/solr/tomcat/webapps/solr/WEB-INF/下新建classes目录
3、将ext_stopword.dic、IKAnalyzer.cfg.xml、mydict.dic拷贝其中
[root@localhost IK Analyzer 2012FF_hf1]# cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/
第二步:需要自定义一个FieldType。Schema.xml中定义。可以在FieldType中指定中文分析器。
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType>
第三部根据对应的sql语句,书写自定义域。指定域的类型为自定义的FieldType。
Sql语句:
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
<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"/>
第四步:重新启动tomcat
大致配置
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <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"/>