<!-- [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 拷贝到 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/
成功跑起来了
<!-- [if !supportLists]-->三. <!-- [endif]-->安装中文分词
在上面的一个文章中,已经使 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" >
将下面的 <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/conf 下solrconfig.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/conf 下schema.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