SOLR安装及中文分词

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if !mso]> <object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui> </object> <mce:style><!-- st1/:*{behavior:url(#ieooui) } --> <!-- [endif]--> 前一阵 在研究搜索引擎分词技术...研究了好长时间 才有了结果..

网上的资料说的都很笼统...下面是自己的安装记录....<!-- [if gte mso 10]> <mce:style><!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} --> <!-- [endif]-->

SOLR 安装及中文分词

<!-- [if !supportLists]-->一. <!-- [endif]-->准备文件

<!-- [if !supportLists]-->1. <!-- [endif]-->Apache Solr 1.3

<!-- [if !supportLists]-->2. <!-- [endif]-->Apache Tomcat

<!-- [if !supportLists]-->3. <!-- [endif]-->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

<!-- [if !supportLists]-->二. <!-- [endif]-->安装

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 拷贝到 tomcatwebapps ,并且改名为 solr.war

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

5. D:/Tomcat5.5conf 文件夹建立 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/

成功跑起来了

<!-- [if !supportLists]-->三. <!-- [endif]-->安装中文分词

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

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

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

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" >

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

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

<analyzertype="query"> 下面的

<tokenizerclass="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>

<!--  [if !supportLists]-->四. 





<!--  [endif]-->修改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>

<!--  [if !supportLists]-->五. 





<!--  [endif]-->修改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>

<!--  [if !supportLists]-->六. 





<!--  [endif]-->去掉所有<solrQueryParser defaultOperator="OR"/>…</schema>

中间的内容


 



加一下代码


 

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

 

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



注意 : 

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

要与 data-import.xml

里面的字段保持一致


重启 tomcat ,OK



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值