solr是apache开源检索框架,用起来很简单。
从听说有这么个东西,到把solr+IKAnalyzer框架搭起来用了一天时间。
下面是本人在今天的劳动成果,拿出来给大家分享下,欢迎讨论和指教。
1 solr 1.3正式版(里面的Lucene是2.3版的,不知道能不能直接换成新出的Lucene 2.4正式版,没有试)
2 apache-solr-1.3.0\dist\apache-solr-1.3.0.war 改名 solr.war放入tomcat的webapp下
3 新建 Tomcat 6.0\conf\Catalina\localhost\solr.xml:
<Context docBase="D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="D:/solr-tomcat/solr" override="true" />
</Context>
4 把解压的solr下面的examples下面的solr目录复制到这里D:/solr-tomcat/
D:/solr-tomcat/solr/conf/solrconfig.xml和schema.xml
前者是该索引服务的一些属性,比如索引文件存放的目录(默认为与conf同级的 data目录),还有缓存,分布之类的一些设置。后者是这个库的字段定义,字段类型,字段名,处理方式。基本上很容易理解,按照自己的需要把字段名改一下。重启tomcat,访问localhost:8080/solr如果能打开,就说明安装成功了。
5 编写ChineseTokenizerFactory类 打包jar 放到/Tomcat 6.0/webapps/solr的lib里面 (连同类需要的jar包一起)
用到的jar包以及版本:(1)apache-solr-core-1.3.0.jar (2)IKAnalyzer3.1.1Stable.jar (3)lucene-core-2.4-dev.jar
package com.yeedoo.slor.tokenizer;
import java.io.Reader;
import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.analysis.BaseTokenizerFactory;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class ChineseTokenizerFactory extends BaseTokenizerFactory {
public TokenStream create(Reader reader) {
return new IKAnalyzer().tokenStream("text", reader);
}
}
6 修改D:/solr-tomcat/solr/conf/schema.xml
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
7 启动/Tomcat 6.0\bin\tomcat6.exe 没有报错,继续
8 http://localhost:8983/solr/admin
在第一行 选择Analysis模式查询
filed 选择type 输入 text
在filed value 中输入: 中华人民共和国 看看效果吧 (::)
从听说有这么个东西,到把solr+IKAnalyzer框架搭起来用了一天时间。
下面是本人在今天的劳动成果,拿出来给大家分享下,欢迎讨论和指教。
1 solr 1.3正式版(里面的Lucene是2.3版的,不知道能不能直接换成新出的Lucene 2.4正式版,没有试)
2 apache-solr-1.3.0\dist\apache-solr-1.3.0.war 改名 solr.war放入tomcat的webapp下
3 新建 Tomcat 6.0\conf\Catalina\localhost\solr.xml:
<Context docBase="D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="D:/solr-tomcat/solr" override="true" />
</Context>
4 把解压的solr下面的examples下面的solr目录复制到这里D:/solr-tomcat/
D:/solr-tomcat/solr/conf/solrconfig.xml和schema.xml
前者是该索引服务的一些属性,比如索引文件存放的目录(默认为与conf同级的 data目录),还有缓存,分布之类的一些设置。后者是这个库的字段定义,字段类型,字段名,处理方式。基本上很容易理解,按照自己的需要把字段名改一下。重启tomcat,访问localhost:8080/solr如果能打开,就说明安装成功了。
5 编写ChineseTokenizerFactory类 打包jar 放到/Tomcat 6.0/webapps/solr的lib里面 (连同类需要的jar包一起)
用到的jar包以及版本:(1)apache-solr-core-1.3.0.jar (2)IKAnalyzer3.1.1Stable.jar (3)lucene-core-2.4-dev.jar
package com.yeedoo.slor.tokenizer;
import java.io.Reader;
import org.apache.lucene.analysis.TokenStream;
import org.apache.solr.analysis.BaseTokenizerFactory;
import org.wltea.analyzer.lucene.IKAnalyzer;
public class ChineseTokenizerFactory extends BaseTokenizerFactory {
public TokenStream create(Reader reader) {
return new IKAnalyzer().tokenStream("text", reader);
}
}
6 修改D:/solr-tomcat/solr/conf/schema.xml
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldType>
7 启动/Tomcat 6.0\bin\tomcat6.exe 没有报错,继续
8 http://localhost:8983/solr/admin
在第一行 选择Analysis模式查询
filed 选择type 输入 text
在filed value 中输入: 中华人民共和国 看看效果吧 (::)