|
<!-- [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
|
|
|