2015年3月

tomcat的solr安装配置,支持中文分词IK Analyzer,支持MYSQL数据库索引

环境 java,tomcat,solr,mysql

一java安装

yum install java
java -version

二tomcat安装配置

下载地址 http://tomcat.apache.org/download-70.cgi
解压缩

tar -C /usr/local -zxf /usr/local/src/apache-tomcat-7.*.tar.gz
mv /usr/local/apache-tomcat-7* /usr/local/tomcat
sudo sed -i s/8080/8983/g /usr/local/tomcat/conf/server.xml

添加用户

useradd -Mb /usr/local tomcat
chown -R tomcat:tomcat /usr/local/tomcat
sudo -u tomcat /usr/local/tomcat/bin/startup.sh

启动关闭

/usr/local/tomcat/bin/startup.sh
/usr/local/tomcat/bin/shutdown.sh

三 solr安装

最新版下载地址 http://apache.arvixe.com/lucene/solr/5.0.0/

tar -zxf solr-5.0.0.tgz
cp solr-5.0.0/dist/solrj-lib/* /usr/local/tomcat/lib/
cp solr-5.0.0/example/resources/log4j.properties /usr/local/tomcat/conf/
cp solr-5.0.0/dist/solr-.war /usr/local/tomcat/webapps/solr.war/dist/solr-5.0.0.war /usr/local/tomcat/webapps/solr.war
cp /usr/local/src/solr-5.0.0/example/lib/ext/* /usr/local/tomcat/webapps/solr/WEB-INF/lib/

虚拟主机配置文件
创建/usr/local/tomcat/conf/Catalina/localhost/solr.xml  

<Context docBase="/usr/local/tomcat/webapps/solr.war" debug="0" crossContext="true">
  <Environment name="solr/home" type="java.lang.String" value="/usr/local/tomcat/solr" override="true" />
</Context>

创建solr索引目录,solr所有的数据在这个目录(相当于应用程序目录)
把官方的测试数据collection1拷贝过来看下

mkdir -p /usr/local/tomcat/solr
cp -r solr-5.0.0/example/solr/collection1/conf /usr/local/tomcat/solr/

重新启动tomcat,测试http://ip:port/solr看下
solr1.png

看到如图表示成功

四solr中文分词 IK Analyzer配置

还有个分词库 mmseg4j分词
源下载地址

解压缩

unzip IK Analyzer 2012FF_hf1.zip -d /tmp

拷贝需要的文件到tomcat的solr虚拟应用程序目录

cp IKAnalyzer2012FF_u1.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib
cp IKAnalyzer.cfg.xml /usr/local/tomcat/webapps/solr/WEB-INF/classes
cp stopword.dic /usr/local/tomcat/webapps/solr/WEB-INF/classes

修改应用程序solr的配置文件 /usr/local/tomcat/solr/conf/schema.xml文件使它支持中文分词

<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

看下solr2.png

五 solr支持数据源mysql,及生成索引库

默认是xml的数据源

1.solr官方是提供一个工具的—Data Import Handler
找到源码包的
${SOLR_SRC}\dist\solr-dataimporthandler-4.9.0.jar
${SOLR_SRC}\dist\solr-dataimporthandler-extras-4.9.0.jar
将这两个jar包添加进web-inf/lib中
cp ${SOLR_SRC}\dist\solr-dataimporthandler-4.9.0.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib

2.solr安装mysql驱动
http://www.oracle.com/官方下载 mysql-connector-java-5.1.25-bin.jar
cp mysql-connector-java-5.1.25-bin.jar /usr/local/tomcat/webapps/solr/WEB-INF/lib

3.配置mysql源
修改solrconfig.xml导入mysql的jar包

<lib dir="../contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="../dist/" regex="solr-dataimporthandler-\d.*\.jar" />

配置dataimporthandler

<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及对应数据库和表

DROP TABLE IF EXISTS `documents`; 
CREATE TABLE `documents` ( 
  `id` int(11) NOT NULL auto_increment, 
  `date_added` datetime NOT NULL, 
  `title` varchar(255) NOT NULL, 
  `content` text NOT NULL, 
  PRIMARY KEY  (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; 
-- ---------------------------- 
-- Records of documents 
-- ---------------------------- 
INSERT INTO `documents` VALUES ('1', '2012-01-11 23:15:59', 'world', 'test1'); 
INSERT INTO `documents` VALUES ('2', '2012-01-11 23:16:30', 'hello', 'test'); 
INSERT INTO `documents` VALUES ('3', now(), 'hello12', 'test'); 
INSERT INTO `documents` VALUES ('4', now(), ‘我们’, 'test');
<dataConfig>
   <dataSource type="JdbcDataSource"-
              driver="com.mysql.jdbc.Driver"
              url="jdbc:mysql://127.0.0.1/test"-
              user="root"-
              password=""/>
   <document>
        <entity name="documents" query="SELECT id, content, title, date_added  FROM documents" >
            <field column="id" name="id" />-
            <field column="content" name="content" />-
            <field column="title" name="hashcode" />-
            <field column="date_added" name="updatetime" />
        </entity>
   </document>
</dataConfig>

4.修改solr配置文件schema.xml支持字段

<field name="id" type="string" indexed="true" stored="true" required="true" /> 
<field name="title" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true"/> 
<field name="content" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true"/> 
<field name="date_added" type="date" indexed="false" stored="true"/> 

5.查看及测试
导入mysql索引数据
solr4.png
点击Execute
solr5.png
查看状态
solr6.png
模拟搜索
solr7.png
成功!

最终实现的计划 通过python抓取批量数据到mysql,然后solr生成实时索引,php实现前端搜索页面

博客地址 http://blog.chromev.com/archives/6/