1 、 Solr 简介
Solr 是一个基于 Lucene 的 Java 搜索引擎服务器。 Solr 提供了层面搜索、命中醒目显示并且支持多种输出格式(包括 XML/XSLT 和 JSON 格式)。它易于安装和配置,而且附带了一个基于 HTTP 的管理界面。 Solr 已经在众多大型的网站中使用,较为成熟和稳定。 Solr 包装并扩展了 Lucene ,所以 Solr 的基本上沿用了 Lucene 的相关术语。更重要的是, Solr 创建的索引与 Lucene 搜索引擎库完全兼容。通过对 Solr 进行适当的配置,某些情况下可能需要进行编码, Solr 可以阅读和使用构建到其他 Lucene 应用程序中的索引。此外,很多 Lucene 工具(如 Nutch 、 Luke )也可以使用 Solr 创建的索引。
2 、Ubuntu 下 Solr 安装配置
由于 Solr 基于 java 开发,因此 Solr 在 windows 及 Linux 都能较好部署使用,但由于 Solr 提供了一些用于测试及管理、维护较为方便的 shell 脚本,因此在生产部署时候建议安装在 Linux 上,测试时候可以在 windows 使用。
下面以 Ubuntu 下安装配置 Solr 进行说明。
首先下载Tomcat的压缩包。
unzip apache-tomcat-6.0.16.zip
mv apache-tomcat-6.0.16 /opt/tomcat
chmod 755 /opt/tomcat/bin/*
下载apache-solr-1.4.0压缩包。tar -xvf apache-solr-1.2.0.tgz
Solr 的安装配置最为麻烦的是对 solr.solr.home 的理解和配置,主要有三种
-
基于当前路径的方式
cp apache-solr-1.4.0/dist/apache-solr-1.4.0.war /opt/tomcat/webapps/solr.war
mkdir /opt/solr-tomcat
cp -r apache-solr-1.2.0/example/solr/ /opt/solr-tomcat/
cd /opt/solr-tomcat
/opt/tomcat/bin/startup.sh
由于在此种情况下(没有设定 solr.solr.home 环境变量或 JNDI 的情况下), Solr 查找 ./solr ,因此在启动时候需要切换到 /opt/solr-tomcat
-
基于环境变量 solr.solr.home
在当前用户的环境变量中( .bash_profile )或在 /opt/tomcat/catalina.sh 中添加如下环境变量
export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/opt/solr-tomcat/solr"
-
基于 JNDI 配置
mkdir –p /opt/tomcat/conf/Catalina/localhost
touch /opt/tomcat/conf/Catalina/localhost/solr.xml ,内容如下 :
<Context docBase="/opt/tomcat/webapps/solr" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="/opt/solr-tomcat/solr" override="true" />
</Context>
访问 solr 管理界面 http://127.0.0.1:8080/solr
3 、用solr从数据库建立中文索引
1.在Ubuntu下安装mysql服务端和客户端。
#apt-get install mysql-server-5.0
#apt-get install mysql
2.添加Handler
编辑/opt/solr-tomcat/solr/conf文件夹下的solrconfig.xml文件,在config元素中添加
3. 在此文件夹中新建一个data-config.xml文件,内容如下
4. 修改schema.xml,找到<fieldType name="text",将分词器修改为中文分词器,这里用的是包装过的Paoding分词,这个东西好像已经不更新了,以后看看IKAnalyzer吧。
原来的schema.xml中没有的字段自己添加上。schema.xml默认是UTF-8编码。首先在<fields></fields>里添加要索引的域。
注意:数据库的表的主键的名字最好是id,以后才好办。
然后在<solrQueryParser defaultOperator="OR"/>下面添加下面行。
5. 包装Paoding的分词器
这两个修改的类就放在/opt/tomcat/webapps/solr中,在压缩包的WEB-INF文件夹中新建classes文件夹,将这两个类连同包层次复制进去就行。
6.设置PAODING_DIC_HOME的环境变量,指向Paoding词典文件的位置。(比如/opt/dic)
#vim /etc/profile
添加下面的环境变量
JAVA_HOME=/usr/lib/jvm/java-6-openjdk
CLASSPATH=.:/usr/lib/jvm/java-6-openjdk/lib
ANT_HOME=/usr/share/ant
PATH="$JAVA_HOME/lib:$ANT_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
PAODING_DIC_HOME=/opt/dic
export JAVA_HOME
export CLASSPATH
export ANT_HOME
export PATH
export PAODING_DIC_HOME
7. 将Paoding和数据库驱动放到/opt/tomcat/webapps/solr/WEB-INF/lib中。
进入浏览器,运行
http://localhost:8983/solr/dataimport?command=full-import
导入成功后,运行
http://localhost:8983/solr/admin/
在搜索框中输入搜索内容进行查询
现在就完成了数据库的索引了。