SOLR安装及中文分词

news/2024/5/19 2:10:19 标签: solr, tomcat, string, 数据库, jdbc, jdk

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

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

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



 


http://www.niftyadmin.cn/n/1790841.html

相关文章

数字电子技术基础阎石老师第五版课后习题解答-很抱歉,其实才写了两道题,大家不要误点进来耽误时间了。但是开始写了又不想删掉,希望日后能补起来吧。

3.1在图3.2.5所示的正逻辑与门和图3.2.6所示的正逻辑或门电路中&#xff0c;若改用负逻辑&#xff0c;试列出它们的逻辑真值表&#xff0c;并说明Y和A、B之间是什么逻辑关系。 3.2.5与门 A B Y 0 0 0 0 1 1 1 0 1 1 1 1 3.26或门 A B Y 0 0 0 0 1 0 1 0 0 1 1 1

洛谷P2605 基站选址

神TM毒瘤线段树优化DP......新姿势get。 题意&#xff1a;有n个村庄&#xff0c;在里面选不多于k个建立基站。 建立基站要ci的费用。如果一个村庄方圆si内没有基站&#xff0c;那么又要支出wi的费用。求最小费用。 解&#xff1a;很显然想到DP&#xff0c;f[i][j]表示前i个村庄…

android-第一行代码

android:orientation horizontal/vertical 设置布局水平还是垂直&#xff0c;默认是垂直 android:layout_gravity center/right/left/bottom/top 位置 android:gravity center/right/left/bottom/top android:textColor #ffffff 字体颜色 android:textStyle bold/italic/boldit…

手机摄像头基础知识-1-缩写篇

AE&#xff1a;auto exposure&#xff0c;自动曝光 AF:auto focus 自动对焦 BAM&#xff1a;bus access manager BOM&#xff1a;bill of materials&#xff0c;物料清单&#xff0c;是描述企业产品组成的技术文件。 bps&#xff1a;bits per second BSI&#xff1a;backs…

Sphinx在windows下安装使用

Sphinx 在 windows 下安装使用 前一阵子尝试使用了一下 Sphinx &#xff0c;一个能够被各种语言 (PHP/Python/Ruby/etc) 方便调用的全文检索系统。网上的资料大多是在 linux 环境下的安装使用&#xff0c;当然&#xff0c;作为生产环境很有必要部署在 *nix 环境下&#…

python 网站 模板转义

在python的字符串中&#xff0c;有的符号要想表达其本意&#xff0c;需要在前面加上\符号&#xff0c;例如单引号&#xff0c;如果要在字符串中表现它&#xff0c;必须写成\单引号里面\样式&#xff0c;才能实现一对单引号以及里面的内容&#xff0c;否则&#xff0c;它就表示字…

没有找到mingwm10.dll的解决办法

研究了 几天...又发现了问题 Qt Creator编译的程序&#xff0c;在其工程文件夹下会有一个debug文件夹&#xff0c;其中有程序的.exe可执行文件。但Qt Creator默认是用动态链接的&#xff0c;就是可执行程序在运行时需要相应的.dll文件。我们点击生成的.exe文件&#xff0c;首先…

手机摄像头基础知识-2-ISP原理学习

基于 Fundamentals of Image Processing&#xff0c; Ian T. Young Jan J. Gerbrands Lucas J. van Vliet Delft University of Technology introduction • Image Processing-----image in → image out • Image Analysis -------image in → measurements out • Image Und…