`

Solr 学习(1) —— 搭建环境

    博客分类:
  • Solr
阅读更多

写在前面

     2010年参加了一个全文搜索的项目,开始学习和使用lucene,写了大半年的代码,在linux上实现了爬虫+建立索引(中文分词)+查询(分页、高亮)+规则(指定关键词组合)触发事件的功能。

     后来随着项目需求的增多,代码越写越多,最痛苦的是在更改实现方案,还有维护索引的时候,又要大量改代码,正当我快崩溃的时候,发现了solr,才知道自己以前实现的维护部分的功能大部分solr都集成了,而且更稳定,功能更强大,原来自己绕了弯路,做了重复发明轮子的工作,于是开始把以前的东西推到重来,全部用solr实现,从此项目在搜索方面稳定了N倍,由衷感谢solr项目给我们带来的便利。以下写一些心得记录自己的学习历程。

 

solr 安装

     linux下安装过程,windows类似


1、安装准备 
     JDK 1.6 或更高版本 
     Tomcat 6

     Solr 3.5 

 

    
2、Tomcat安装

    将Tomcat发行包解压到指定目录,如/home/tomcat/
3、Solr安装
     将Solr发行包(apache-solr-3.5.0.tgz)解压,复制example/webapp/solr.war到tomcat的webapps目录,例如/home/tomcat/webapps,复制Solr发行包中配置示范文件(/example/solr文件夹)到tomcat/bin目录,如/home/tomcat/bin。按照solr的要求,需要指定solr-home的路径,如不指定,默认当前运行目录(tomcat/bin),于是本文为了简单,直接把solrconf放到bin目录下

4、中文分词器安装

    中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点,看应用场合自己衡量选择吧。

下面给出两种分词器的安装方法,任选其一即可,推荐第一中,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-smartcn-3.5.0.jar

4.1 smartcn 分词器的安装

将contrib/analysis-extras/lucene-libs/lucene-smartcn-3.5.0.jar复制到/tomcat/webapps/solr/WEB-INF/lib,

打开/tomcat/bin/solr/conf/scheme.xml,编辑text字段类型如下,添加以下代码到shema中的相应位置,就是找到fieldType定义的那一段,在下面多添加这一段就好啦

 

 

<fieldType name="text" class="solr.TextField">
    <analyzer class="org.apahce.lucene.analysis.cn.smart.SmartChineseAnalyzer"/>
</fieldType>
 

4.2 IK 分词器的安装   IKAnalyer3.2.8 下载

将IKAnalyzer3.2.5发行包解压,复制IKAnalyzer3.2.8Stable.jar到Solr的lib中,如/home/tomcat/webapps/solr/WEB-INF/lib,复制配置文件IKAnalyzer.cfg.xml和ext_stopword.dic到tomcat/bin中,如/home/tomcat/bin。同样,到/tomcat/webapps/solr/WEB-INF/lib,

打开/tomcat/bin/solr/conf/scheme.xml,编辑text字段类型如下,添加到schema中

 

 

 

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

    另外,IK分词的google code上也有详细的使用说明,可以多参考下。作者首页,大家都去学习下


5.TOMCAT配置


5.1 server.xml

    (如/home/tomcat/conf/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" /> 




5.2 solr.xml

      如果不想配置solrhome的位置,这一步可略过,因前面把/solr/conf放在了{$TOMCAT}/bin/下面,如果要把配置文件放在其它位置,则需要按这样配置。
     新增solr.xml在{$TOMCAT}/conf/Catalina/localhost/下。TOMCAT在启动时将自动加载该CONTEXT。 docBase应设置为solr war包存放位置,例如/home/apache-solor-3.5.0/example/webapp/solr.war 
     solr/home的值应设置为你规划存放的索引根路径,例如/web/solr/。该目录在以下将称为{$SOLR_HOME}

 

 

<Context docBase="/home/apache-solr-3.5.0/example/webapp/solr.war" debug="0" crossContext="true" > 
	<Environment name="solr/home" type="java.lang.String" value="/web/solr" override="true" />
</Context>  
  

6 启动Solr

       

       Solr在 Tomcat里,所以启动Tomcat即可,建议初期用bootstrap.jar,方便发现配置中的错误,如

进入目录/home/tomcat/bin ,然后敲入 java -jar bootstrap.jar即可运行,不报错的话就可以正常访问了

http://127.0.0.1:8983/solr/

 

    下面再看下分词器有没配置成功

 

http://127.0.0.1:8983/solr/admin/analysis.jsp

 

 

  

 

 

 

输入:  solr中文分词器

 

如果分词的结果显示  solr|中文|分词|器   

 

恭喜你,分词器配置成功,solr环境搭建完成了

 

 

 

 

  • 大小: 55.7 KB
分享到:
评论
5 楼 feng_tai_jun 2013-10-08  
 <fieldType name="text_zh" class="solr.TextField">  
        	<analyzer class="org.[color=red]apache[/color].lucene.analysis.cn.smart.SmartChineseAnalyzer"/>  
        </fieldType>


作者把apache拼错了。。。。
4 楼 dongbiying 2013-05-06  
dongbiying 写道
bingyu 写道
问下,你的linux环境是什么样的,有没有装中文的补丁?我加中文分词的时候加不上去。

同上 。。。报错 。。。
HTTP Status 500 - Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: <abortOnConfigurationError>false</abortOnConfigurationError> in solr.xml ------------------------------------------------------------- org.apache.solr.common.SolrException: Cannot load analyzer: org.apahce.lucene.analysis.cn.smart.SmartChineseAnalyzer at org.apache.solr.schema.IndexSchema.readAnalyzer(IndexSchema.java:927) at org.apache.solr.schema.IndexSchema.access$100(IndexSchema.java:60) at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:453) at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:481) at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:140) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:490) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:123) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:478) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:332) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:216) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161) at




我知道错在哪里啦 
应该这样。。。弄了 好几个小时 
<fieldType name="text" class="solr.TextField"> 
    <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
     </analyzer>
</fieldType>
3 楼 dongbiying 2013-05-06  
bingyu 写道
问下,你的linux环境是什么样的,有没有装中文的补丁?我加中文分词的时候加不上去。

同上 。。。报错 。。。
HTTP Status 500 - Severe errors in solr configuration. Check your log files for more detailed information on what may be wrong. If you want solr to continue after configuration errors, change: <abortOnConfigurationError>false</abortOnConfigurationError> in solr.xml ------------------------------------------------------------- org.apache.solr.common.SolrException: Cannot load analyzer: org.apahce.lucene.analysis.cn.smart.SmartChineseAnalyzer at org.apache.solr.schema.IndexSchema.readAnalyzer(IndexSchema.java:927) at org.apache.solr.schema.IndexSchema.access$100(IndexSchema.java:60) at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:453) at org.apache.solr.schema.IndexSchema$1.create(IndexSchema.java:481) at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:140) at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:490) at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:123) at org.apache.solr.core.CoreContainer.create(CoreContainer.java:478) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:332) at org.apache.solr.core.CoreContainer.load(CoreContainer.java:216) at org.apache.solr.core.CoreContainer$Initializer.initialize(CoreContainer.java:161) at
2 楼 martin3000 2012-01-16  
bingyu 写道
问下,你的linux环境是什么样的,有没有装中文的补丁?我加中文分词的时候加不上去。

我用的是redhat5.3,安装了中文支持,没有遇到过中文分词加不上去的情况,可以仔细检查下配置再看看,应该就能找到原因了
1 楼 bingyu 2012-01-12  
问下,你的linux环境是什么样的,有没有装中文的补丁?我加中文分词的时候加不上去。

相关推荐

Global site tag (gtag.js) - Google Analytics