我用的是 Solr3.3
安装前准备
Java 1.5 或更高版本
servlet 容器,如 Tomcat 5.5。
SOLR安装
将SOLR发行包解压,复制dist/apache-solr-3.3.0.war到指定目录,例如c:/solr
TOMCAT配置
server.xml
在server.xml主要设置侦听端口。一般来说,SOLR常用端口为8983。你也可以使用自己喜欢的端口,例如80或8080。 同时,注意将URIEncoding设置为UTF-8。例如AJP等更多Native优化,参考TOMCAT优化方案。
<Connector port="8983" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" />
solr.xml
新增solr.xml在{$TOMCAT}/conf/Catalina/localhost/下。TOMCAT在启动时将自动加载该CONTEXT。 docBase应设置为solr war包存放位置,例如c:/solr/apache-solr-3.3.0.war
solr/home的值应设置为你规划存放的索引根路径,例如/web/solr/。该目录在以下将称为{$SOLR_HOME}
<Context docBase="c:/solr/apache-solr-3.3.0.war" debug="0" crossContext="true" > <Environment name="solr/home" type="java.lang.String" value="/web/solr" override="true" /> </Context>
SOLR配置
把solr包里面的example\solr文件夹下面的所有文件放入到 {$SOLR_HOME}里面
庖丁分词包安装与设置
solr3.3+庖丁分词器paoding的例子,paoding分词器,最新的JAR文件为paoding-analysis-2.0.4-beta,不支持lucene3.0以上版本,作者提供了支持lucene3.0以上版本的源码,但没有打成JAR包发布。附件里有编译好的源码,支持lucene3.0以上版本,同时还添加了一个类,该类的作用是让庖丁分词器支持solr。
添加的类文件如下:
package net.paoding.analysis.analyzer.solr; import java.io.Reader; import java.util.Map; import net.paoding.analysis.analyzer.PaodingTokenizer; import net.paoding.analysis.analyzer.TokenCollector; import net.paoding.analysis.analyzer.impl.MaxWordLengthTokenCollector; import net.paoding.analysis.analyzer.impl.MostWordsTokenCollector; import net.paoding.analysis.knife.PaodingMaker; import org.apache.lucene.analysis.Tokenizer; import org.apache.solr.analysis.BaseTokenizerFactory; /** * 实现Solr3.2分词器接口 * 基于PaodingTokenizer的实现 * * @author sunlightcs * * http://hi.juziku.com/sunlightcs/ * */ public class ChineseTokenizerFactory extends BaseTokenizerFactory{ /** * 最多切分 */ public static final String MOST_WORDS_MODE = "most-words"; /** * 按最大切分 */ public static final String MAX_WORD_LENGTH_MODE = "max-word-length"; private String mode = null; private TokenCollector tokenCollector = null; public void init(Map<String,String> args) { setMode(args.get("mode")); } public Tokenizer create(Reader input) { return new PaodingTokenizer(input, PaodingMaker.make(), tokenCollector); } /** * 默认按最多切分 */ public void setMode(String mode) { if (mode == null || "default".equalsIgnoreCase(mode) || MOST_WORDS_MODE.equalsIgnoreCase(mode)) { tokenCollector = new MostWordsTokenCollector(); } else { tokenCollector = new MaxWordLengthTokenCollector(); } } }
已经将该类文件与paoding源码打包成了paoding-analysis3.0.jar文件,附件里有下载。
在使用庖丁分词器时,要从http://code.google.com/p/paoding/处下载词典及配置文件。 其中,paoding-dic-home.properties配置文件里,要指定词典的路径,如果词典放在classes目录下面,则词典的路径为:paoding.dic.home=classpath:dic
将这些配置文件及词典paoding-analysis-2.0.4-beta\dic 放到apache-solr3.3.0/WEB-INF/lib/classes目录下,并将paoding-analysis3.0.jar放到apache-solr3.3.0/WEB-INF/lib目录里。
然后在solr中加入paoding分词器,打开 schema.xml文件,位置:solr/home/conf/ schema.xml
<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <!-- 使用paoding分词器,按最多切分 mode="most-words"这个是在上面哪个类里定义好的。--> <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/> ··· ··· </analyzer> <analyzer type="query"> <tokenizer class="net.paoding.analysis.analyzer.solr.ChineseTokenizerFactory" mode="most-words"/> ··· ··· </analyzer> </fieldType>
http://localhost:8080/solr