欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

Apache Solr 4.9 和 IKAnalyzer中文分词配置 有大用

Apache Solr 4.9 和 IKAnalyzer中文分词配置(上)

2014年12月17日 17:33:50 爱人间 阅读数:1883                

如果地址被墙上不去,可以下载我共享在百度网盘上的

1、Solr的简单安装                

运行Solr需要安装jdk,这里略过。

Solr下载后,放到D盘根目录下,然后点击开始菜单,点击运行,输入cmd回车,输入如下命令:

  1. C:\Users\Administrator>d:

  2. D:\>cd solr-4.9.0/example

  3. D:\>java -jar start.jar  

或者在solr-4.9.0下创建个启动.bat,调试会方便些

  1. @echo off   

  2. title 启动服务   

  3. cd example   

  4. java -jar start.jar   

  5. pause  

访问http://localhost:8983/solr/,如下界面即代表solr安装成功
QQ截图20140808212308                

2、Solr配置多核                

进入solr-4.9.0\example下,复制collection1文件夹并重命名为collection2,进入collection2\conf,编辑core.properties文件,将name=collection1改为name=collection2,也就是复制后的文件夹名称,多核就配置好了

3、配置IKAnalyzer中文分词                

通过上面的IKAnalyzer地址,下载IK Analyzer 2012FF_hf1.zip,将解压后的IKAnalyzer2012FF_u1.jar放到solr-4.9.0\example\solr-webapp\webapp\WEB-INF\lib下,将IKAnalyzer.cfg.xml、stopword.dic放到solr-4.9.0\example\solr-webapp\webapp\WEB-INF\classes下,没有classes文件夹就创建一个。

打开solr-4.9.0\example\solr\collection1\conf\schema.xml文件,粘帖如下代码:

  1. <fieldType name=“text_ik” class=“solr.TextField”>  

  2.     <analyzer class=“org.wltea.analyzer.lucene.IKAnalyzer”/>  

  3. </fieldType>  

  4.   

  5. <field name=“ik” type=“text_ik” indexed=“true” stored=“true” multiValued=“false” />   

重启服务器,也就是启动.bat,然后我们前往http://localhost:8983/solr/#/collection1/analysis,随便打上一段话,比如“随便打些汉字测试分词效果”,记得Analyse Fieldname选择我们刚刚配置的ik,点击Analyse Values按钮
QQ截图20140808221531                

这样就分词成功了

下一次我们配置IKAnalyzer的细粒度分词和智能分词

转载请注明:XDPS.org » Apache Solr 4.9 和 IKAnalyzer中文分词配置(上)                

Apache Solr 4.9 和 IKAnalyzer中文分词配置(下)

2014年12月17日 17:35:10 爱人间 阅读数:1018                

接上一篇:Apache Solr 4.9 和 IKAnalyzer中文分词配置(上)                

下一篇:Apache Solr 4.9 和 IKAnalyzer中文分词配置(续)Ubuntu 上的 Drupal                

上一次我们成功配置了Solr搜索以及IKAnalyzer的中文分词,但是在IKAnalyzer_2012FF_hf1版本的IKAnalyzer类中没有读取配置中的useSmart属性,所以在建立索引和查询索引中都使用的是细粒度分词。网上找到了他人分享的方法,解决了这个问题。

方法是创建了两个类IKAnalyzerWithSmart(默认智能分词)和IKAnalyzerWithoutSmart(默认细粒度分词),再重新导出jar包,将jar包放到solr-4.9.0\example\solr-webapp\webapp\WEB-INF\lib目录下,并修改schema.xml文件内容如下,这样就能够在创建索引时使用智能分词,在查询索引时使用细粒度分词。

  1. <fieldType name=“text_ik” class=“solr.TextField”>

  2.     <analyzer type=“index” class=“org.wltea.analyzer.lucene.IKAnalyzerWithSmart” />

  3.     <analyzer type=“query” class=“org.wltea.analyzer.lucene.IKAnalyzerWithoutSmart” />

  4. </fieldType>

修改后的jar包下载:IKAnalyzer2012FF_u1_custom.jar 密码: 6bjm  我已下载到我的百度网盘里                

效果预览

QQ截图20140810104844                





相关步骤:                

1、下载IKAnalyzer源代码                

源代码文件名:IK Analyzer 2012FF_hf1_source.rar,如果谷歌上不去可以下载网盘里的,都一样



2、导入IKAnalyzer源代码                

这里呢我们需要用到eclipse,如果电脑上没有的话可以下载安装一个

1)首先打开eclipse,选择File–>New–>Project,

QQ截图20140808231931                

2)选择Java–>Java Project,点击Next,

QQ截图20140808232030                

3)输入Project name:IKAnalyzer_2012FF_hf1_custom,点击Finish

4)打开解压后的IKAnalyzer source文件夹,复制src下的org文件夹,拷贝到刚刚创建的java项目IKAnalyzer_2012FF_hf1_custom下的src目录。刷新左侧列表,发现有好多红叉

QQ截图20140808233017                

这是因为IKAnalyzer引用的jar包没有被导入的关系,那么我们来导入相关jar包。

3、导入相关jar文件                

第一个错误是这里,IKAnalyzer.java:

QQ截图20140808233926                

鼠标放上去提示是:The import org.apache cannot be resolved,因为他这里导入的是org.apache.lucene,所以要去下载Apache Lucene 4.9.0,下载后解压。

解压后右键单击项目名称IKAnalyzer_2012FF_hf1_custom,选择最下面的Properties,或者按快捷键Alt+Enter,接下来选Java Build Path–>Libraries–>Add External JARs,找到我们刚刚解压的Lucene文件夹,选择lucene-4.9.0\core\lucene-core-4.9.0.jar这个jar文件,OK

QQ截图20140809102756                

这样就导入了一个jar包,接下来已同样的方法导入下面两个文件:

  • lucene-4.9.0\queryparser\lucene-queryparser-4.9.0.jar

  • lucene-4.9.0\analysis\common\lucene-analyzers-common-4.9.0.jar

4、创建类                

右键单击org.wltea.analyzer.lucene包,选择New–>Class,Name处填写:IKAnalyzerWithSmart,点击Finish

QQ截图20140809103232

QQ截图20140809103621                

粘帖下面的代码,IKAnalyzerWithSmart.java:

  1. package org.wltea.analyzer.lucene;
      

  2. import java.io.Reader;
      

  3. import org.apache.lucene.analysis.Analyzer;

  4. import org.apache.lucene.analysis.Tokenizer;
      

  5. /**     

  6.  * @Description: TODO  

  7.  * @author houqirui   

  8.  * @date 2014-8-1 下午5:01:57   

  9.  */

  10. public final class IKAnalyzerWithSmart extends Analyzer{
      

  11.     private boolean useSmart = true;
      

  12.     public boolean useSmart() {

  13.         return useSmart;

  14.     }   
      

  15.     public void setUseSmart(boolean useSmart) {

  16.         this.useSmart = useSmart;

  17.     }   
      

  18.     /**  

  19.      * IK分词器Lucene  Analyzer接口实现类  

  20.      *   

  21.      * 默认细粒度切分算法  

  22.      */  

  23.     public IKAnalyzerWithSmart(){

  24.         this(true);

  25.     }   
      

  26.     /**  

  27.      * IK分词器Lucene Analyzer接口实现类  

  28.      *   

  29.      * @param useSmart 当为true时,分词器进行智能切分  

  30.      */  

  31.     public IKAnalyzerWithSmart(boolean useSmart){

  32.         super();

  33.         this.useSmart = useSmart;

  34.     }   
      

  35.     /**  

  36.      * 重载Analyzer接口,构造分词组件  

  37.      */  

  38.     @Override  

  39.     protected TokenStreamComponents createComponents(String fieldName, final Reader in) {

  40.         Tokenizer _IKTokenizer = new IKTokenizer(in , this.useSmart());

  41.         return new TokenStreamComponents(_IKTokenizer);

  42.     }   

  43. }  

同样的方法创建IKAnalyzerWithoutSmart类,IKAnalyzerWithoutSmart.java:

  1. package org.wltea.analyzer.lucene;
      

  2. import java.io.Reader;
      

  3. import org.apache.lucene.analysis.Analyzer;

  4. import org.apache.lucene.analysis.Tokenizer;
      

  5. /**     

  6.  * @Description: TODO  

  7.  * @author houqirui   

  8.  * @date 2014-8-1 下午5:01:57   

  9.  */

  10. public final class IKAnalyzerWithoutSmart extends Analyzer{
      

  11.     private boolean useSmart = false;
      

  12.     public boolean useSmart() {

  13.         return useSmart;

  14.     }   
      

  15.     public void setUseSmart(boolean useSmart) {

  16.         this.useSmart = useSmart;

  17.     }   
      

  18.     /**  

  19.      * IK分词器Lucene  Analyzer接口实现类  

  20.      *   

  21.      * 默认细粒度切分算法  

  22.      */  

  23.     public IKAnalyzerWithoutSmart(){

  24.         this(false);

  25.     }   
      

  26.     /**  

  27.      * IK分词器Lucene Analyzer接口实现类  

  28.      *   

  29.      * @param useSmart 当为true时,分词器进行智能切分  

  30.      */  

  31.     public IKAnalyzerWithoutSmart(boolean useSmart){

  32.         super();

  33.         this.useSmart = useSmart;

  34.     }   
      

  35.     /**  

  36.      * 重载Analyzer接口,构造分词组件  

  37.      */  

  38.     @Override  

  39.     protected TokenStreamComponents createComponents(String fieldName, final Reader in) {

  40.         Tokenizer _IKTokenizer = new IKTokenizer(in , this.useSmart());

  41.         return new TokenStreamComponents(_IKTokenizer);

  42.     }   

  43. }  

4、导出jar文件                

鼠标右键单击项目,Export–>Java–>JAR File–>Next,点击Browse,选择jar存放的路径,记得输入文件名,保存后点击Finish,jar文件导出完毕。

文章部分内容来自:http://blog.csdn.net/qiruiduni/article/details/38342653                

转载请注明:XDPS.org » Apache Solr 4.9 和 IKAnalyzer中文分词配置(下)                

来自  https://blog.csdn.net/menghuannvxia/article/details/41984463 
                           
普通分类: