SOLR安装及中文分词

前一阵 在研究搜索引擎分词技术...研究了好长时间 才有了结果..

网上的资料说的都很笼统...下面是自己的安装记录....

SOLR 安装及中文分词

一.    准备文件

1.       Apache Solr 1.3

2.       Apache Tomcat

3.       jdk6.0

Apache Solr 1.3:

windows 版本 http://labs.xiaonei.com/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.zip
linux
版本 http://labs.xiaonei.com/apache-mirror/lucene/solr/1.3.0/apache-solr-1.3.0.tgz

分词以 Paoding 词为例 . 我的版本是 paoding-analysis-2.0.4-beta

二.    安装

1. JDK 6.0  它集成了 JRE. 如果 5.0 以下的版本 .. 则需要安装 JRE

2 安装 Tomcat; 安装过程中 会提示 JDK 目录 . 选中你安装的目录即可 . 我这里 Tomcat 目录为 D:/Tomcat5.5

3. Apache Solr 1.3 解压到目录 .. D:/apache-solr-1.3.0, 将它下面的 dist 文件夹中的 pache-solr-1.3.0.war 拷贝到 tomcat webapps ,并且改名为 solr.war

4. 新建一个 solr-tomcat 目录 .. 我的是 D:/solr-tomcat/  建在哪儿你可以自己决定 . 把它下面在建立一个 solr 文件夹,把 D:/apache-solr-1.3.0, 包里面的 example/solr 文件夹下面的所有文件放入到 solr 里面

5. D:/Tomcat5.5 conf 文件夹建立 Catalina 文件夹,然后在 Catalina 文件夹中在建立 localhost 文件夹,在该文件夹下面建立 solr.xml

       内容为 :

<Context ocBase="D:/Tomcat5.5/webapps/solr.war" debug="0" crossContext="true" >  # 上面 solr.war 的目录

<Environment name="solr/home" type="java.lang.String" value="D:/solr-tomcat/solr" override="true" />   #solr 的安装目录

</Context>

6.Tomcat  运行 http://localhost:8080/solr/

成功跑起来了

三.   安装中文分词

在上面的一个文章中,已经使 solr 跑起来了,在上面的基础上,加入中文分词。我用的是 paoding 分词器!
1.
请下好 paoding 分词器,下载地址:
http://code.google.com/p/paoding/downloads/list

解压 我的目录是 D:/paoding-analysis-2.0.4-beta

2. 在使用 paoding 的时候要注意: paoding dic 位置,也就是字典的位置

3. 编译一个 jar 如果没有 可以自己下载 jar

代码如下 :

 

package com.yeedoo.slor.tokenizer; 

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.TokenStream; 

import org.apache.solr.analysis.BaseTokenizerFactory;  

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; 

public void setMode(String mode) { 

if (mode == null || MOST_WORDS_MODE.equalsIgnoreCase(mode) || "default".equalsIgnoreCase(mode)) { 

this.mode = MOST_WORDS_MODE; 

} else if (MAX_WORD_LENGTH_MODE.equalsIgnoreCase(mode)) { 

this.mode = MAX_WORD_LENGTH_MODE; 

} else { 

throw new IllegalArgumentException(" 不合法的分析器 Mode 参数设置 :" + mode); 

@Override 

public void init(Map<String,String> args) { 

super.init(args); 

setMode(args.get("mode").toString()); 

public TokenStream create(Reader input) { 

return new PaodingTokenizer(input, PaodingMaker.make(), createTokenCollector()); 

private TokenCollector createTokenCollector() { 

if (MOST_WORDS_MODE.equals(mode)) 

return new MostWordsTokenCollector(); 

if (MAX_WORD_LENGTH_MODE.equals(mode)) 

return new MaxWordLengthTokenCollector(); 

throw new Error("never happened"); 

}

这个 jar paoding 目录下的 paoding-analysis.jar 一起复制到 D:/Tomcat5.5/webapps/solr/WEB-INF/lib

4.D:/solr-tomcat/solr/conf 目录下 schema.xml 文件

找到 < fieldType  name ="text"  class ="solr.TextField"  positionIncrementGap ="100" >

将下面的 <tokenizer class="solr.WhitespaceTokenizerFactory"/> 替换为

< tokenizer  class ="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory"  mode ="most-words" />  

<analyzer type="query">   下面的

<tokenizer class="solr.WhitespaceTokenizerFactory"/>

替换为

< tokenizer class ="com.yeedoo.slor.tokenizer.ChineseTokenizerFactory"  mode ="most-words" />

 

重启你的 tomcat ok

 

利用SOLR

搭建企业搜索平台 之十(数据库数据导入到solr

 

. 

准备文件


1.apache-solr-dataimporthandler-1.3.0.jar 

D:/apache-solr-1.3.0/dist

目录下


2.D:/apache-solr-1.3.0/example/example-DIH/solr

3. 

你是哪种数据库,提供该数据库的jdbc

驱动。


. D:/solr-tomcat/solr/conf 

下创建 data-import.xml

文件 代码如下


<?xml version="1.0" encoding="UTF-8"?>

<dataConfig>

    

<dataSource type="JdbcDataSource"

                  

driver="com.mysql.jdbc.Driver"

                  

url="jdbc:mysql://localhost/discuz"

   

               

user="root"

                  

password="root"/>

 

    

<document name="doc">

        

<entity name="jos_content" query="select * from cdb_members ">

                          

<field column="uid" name="uid" />

            

<field column="username" name="username" />

                 

</entity>

    

</document>

</dataConfig>

 
 四.  






 
 修改D:/solr-tomcat/solr/confsolrconfig.xml



         



613

行 加一下代码


<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">

    

<lst name="defaults">

      

<str name="config">./data-import.xml</str>

    

</lst>

  

</requestHandler>

 
 五.  






 
 修改D:/solr-tomcat/solr/confschema.xml



         

<defaultSearchField>uid</defaultSearchField>

设置默认搜索的字段


         



去掉所有<fields>… </fields>

中间的内容 加以下代码


<fields>

 

         

<field name="uid" type="string" indexed="true" stored="true" required="true"/>

         

<field name="username" type="text" indexed="true" stored="true" required="true"/>

 

         

<dynamicField name="*" type="ignored" />  

#



必填!!!




 </fields>

 
 六.  






 
 去掉所有<solrQueryParser defaultOperator="OR"/>…</schema>

中间的内容


         



加一下代码


   

<copyField source="uid" dest="most-words"/>

   

<copyField source="username" dest="most-words"/>

 

注意 : 

第五 和第六 是设置字段的..

要与 data-import.xml

里面的字段保持一致


重启 tomcat ,OK



 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值