分享

让Nutch支持中文分词

 duduwolf 2005-10-09

转自:http://www./blog/article.asp?id=138

Nutch搜索引擎是一个构建在Lucene上的开放源代码的搜索引擎。可以通过CVS取得它的最新版本。让nutch支持中文分词的方法和Lucene类似,但是nutch很多时候调用了底层的Lucene API。因此需要我们做更多的工作。

一、修改查询分析器

需要修改的文件是:net.nutch.analysis.NutchAnalysis.java。这个文件是从NutchAnalysis.jj使用JavaCC自动生成的,但是我们可以手工修改它以支持中文。

package net.nutch.analysis;

import net.nutch.searcher.Query;

import java.io.*;

/** The JavaCC-generated Nutch lexical analyzer and query parser. */

public class NutchAnalysis {



private String queryString;



/** Construct a query parser for the text in a reader. */

public static Query parseQuery(String queryString) throws IOException {

NutchAnalysis parser =

new NutchAnalysis();

parser.queryString = queryString;

return parser.parse();

}



/** For debugging. */

public static void main(String[] args) throws Exception {

String sentence ="厦门大学艺术教育学院副院长李未明教授长期从事音乐教学,";

StringReader input= new java.io.StringReader(sentence);

BufferedReader in = new BufferedReader(input);

//while (true) {

System.out.print("Query: ");

String line = in.readLine();

System.out.println(parseQuery(line));

//}

}



/** Parse a query. */

final public Query parse() throws IOException {

Query query = new Query();

StringReader input;



input = new java.io.StringReader(queryString);



org.apache.lucene.analysis.TokenStream tokenizer = new seg.result.CnTokenizer(input);



//just a demo

for (org.apache.lucene.analysis.Token t = tokenizer.next(); t != null; t = tokenizer.next())

{

String[] array = {t.termText()};

query.addRequiredPhrase(array, t.type());

}

return query;

}

}

二、测试

在命令行执行:

>java "-Ddic.dir=D:/SSeg/Dic" -classpath D:\lucenne\lucene-1.4-final.jar;D:\SSeg\lib\seg.jar;D:\SSeg\lib\nutch.jar net.nutch.analysis.NutchAnalysis

返回的查询对象内容是:

Query: ns:厦门 n:大学 n:艺术 vn:教育 n:学院 b:副 n:院长 nr:李 nr:未明 n:教授 d:长期 v:从事 n:音乐 vn:教学 w:,

在unix的命令行下执行略有不同:

$java "-Ddic.dir=/home/nutch/Dic" -cp /home/nutch/lib/lucene-1.4-final.jar:/home/nutch/lib/seg.jar:/home/nutch/lib/nutch.jar net.nutch.analysis.NutchAnalysis

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多