Lucene学習——IKAnalyzer中国語分詞(一)


一、環境
1、プラットフォーム:MyEclipse 8.5/JDK 1.5
2、オープンソースフレーム:Lucene 3.6.1/IKAnalyzer 2012
3、目的:IKAnalyzerの分詞効果をテストする
二、開発デバッグ
1、ダウンロードフレーム
    1)IKAnalyzer:http://code.google.com/p/ik-analyzer/downloads/list
       2)Lucene:http://www.apache.org/dist/lucene/java/3.6.1/
2、依存ライブラリを追加する
1)Luceneを追加する:lucene-core-3.61.jar
2)IKAnalyzerを追加する:IKAnalyzer 202.jar
3、IKAnalyzerを配置する
1)プロファイルIKAnalyzer.cfg.xmlとStopWord辞書ライブラリstopword.dicファイルを追加し、この2つのファイルをsrcディレクトリの下に置いてください。つまり、classpathパスの下です。
4、テストプログラムを作成し、テストコードは以下の通りです。
package org.cyxl.lucene.test;

import java.io.StringReader;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.wltea.analyzer.lucene.IKAnalyzer;

public class IKAnalyzerTest {
	public static void main(String[] args) {
		String keyWord = "IKAnalyzer           ,       ";
		//  IKAnalyzer      
		IKAnalyzer analyzer = new IKAnalyzer();
		//       
		analyzer.setUseSmart(true);
		//       
		try {
			printAnalysisResult(analyzer, keyWord);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 *              
	 * 
	 * @param analyzer
	 *               
	 * @param keyWord
	 *               
	 * @throws Exception
	 */
	private static void printAnalysisResult(Analyzer analyzer, String keyWord)
			throws Exception {
		System.out.println("["+keyWord+"]      ");
		TokenStream tokenStream = analyzer.tokenStream("content",
				new StringReader(keyWord));
		tokenStream.addAttribute(CharTermAttribute.class);
		while (tokenStream.incrementToken()) {
			CharTermAttribute charTermAttribute = tokenStream
					.getAttribute(CharTermAttribute.class);
			System.out.println(charTermAttribute.toString());

		}
	}
}
5、結果は以下の通りです
[IKAnalyzer           ,       ]      
        :stopword.dic
ikanalyzer
 
  
  
  
   
 
  
  
  
 
6、自分の辞書とStopWordを拡張する
       1)srcディレクトリの下で、自分の辞書ファイルext.dicを新規作成し、次のように入力します。
    
       2)srcディレクトリの下で、自分のStopWordファイルchinese(u)を新規作成します。stopword.dic(第一行の空きです。疑惑中です。)
 
 
 
 
 
       3)IKAnalyzer設定ファイルIKAnalyzer.cfg.xmlは、以下の通りです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">  
<properties>  
	<comment>IK Analyzer     </comment>
	<!--                 -->
	<entry key="ext_dict">ext.dic;</entry> 
	
	<!--                   -->
	<entry key="ext_stopwords">stopword.dic;chinese_stopword.dic</entry> 
	
</properties>
      4)配置後のテスト結果は以下の通りです。
[IKAnalyzer           ,       ]      
      :ext.dic
        :stopword.dic
        :chinese_stopword.dic
ikanalyzer
    
  
   
  
  
  
三、まとめ
1、IKAANalyzer分詞の効果は基本的にはまだ大丈夫です。私達自身のプロジェクトによって、自分の辞書とStopWordを拡張できます。
2、以下は結果の中国語の分詞とLuceneについて前のページの検索エンジンの原形を修正して、中国語のウェブサイトに適合させます。