mmseg4j 发布也有一段时间了,前些日子忙着发布新的版本,修正 bug 之类的。使用示例一直拖到现在,其实 svn 上的 test 有使用 lucene 例子。如果你了解 lucene ,就不用例子也可以很方便与它集成。
mmseg4j 有几个 analyzer:SimpleAnalyzer、ComplexAnalyzer、MaxWordAnalyzer、MMSegAnalyzer。前面 三个都是继承 MMSegAnalyzer,MMSegAnalyzer 默认使用 max-word 方式分词。这些 analyzer 都有无参数的构造函数,还有一个带词库目录为参数的构造函数。怎么用也没多少可说的,看下 svn 里 test:
package com.chenlb.mmseg4j.lucene;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import com.chenlb.mmseg4j.analysis.ComplexAnalyzer;
import com.chenlb.mmseg4j.analysis.MaxWordAnalyzer;
import com.chenlb.mmseg4j.analysis.SimpleAnalyzer;
public class LuceneUseSimpleAnalyzerTest extends TestCase {
Directory dir;
Analyzer analyzer;
@Override
protected void setUp throws Exception {
String txt = "京华时报1月23日报道 昨 天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。";
//txt = "2008年底发了资金吗";
analyzer = new SimpleAnalyzer;
analyzer = new ComplexAnalyzer;
//analyzer = new MaxWordAnalyzer;
dir = new RAMDirectory;
IndexWriter iw = new IndexWriter(dir, analyzer);
Document doc = new Document;
doc.add(new Field("txt", txt, Field.Store.YES, Field.Index.ANALYZED));
iw.addDocument(doc);
iw.commit;
iw.optimize;
iw.close;
}
public void testSearch {
try {
IndexSearcher searcher = new IndexSearcher(dir);
QueryParser qp = new QueryParser("txt", analyzer);
Query q = qp.parse("西 伯利亚"); //2008年底
System.out.println(q);
TopDocs tds = searcher.search(q, 10);
System.out.println("======size:"+tds.totalHits+"========");
for(ScoreDoc sd : tds.scoreDocs) {
System.out.println(sd.score);
System.out.println(searcher.doc(sd.doc).get("txt"));
}
} catch (CorruptIndexException e) {
e.printStackTrace;
} catch (IOException e) {
e.printStackTrace;
} catch (ParseException e) {
e.printStackTrace;
}
}
}
package com.chenlb.mmseg4j.lucene;
import java.io.IOException;
import junit.framework.TestCase;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.RAMDirectory;
import com.chenlb.mmseg4j.analysis.ComplexAnalyzer;
import com.chenlb.mmseg4j.analysis.MaxWordAnalyzer;
import com.chenlb.mmseg4j.analysis.SimpleAnalyzer;
public class LuceneUseSimpleAnalyzerTest extends TestCase {
Directory dir;
Analyzer analyzer;
@Override
protected void setUp throws Exception {
String txt = "京华时报1月23日报道 昨天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。";
//txt = "2008年底发了资金吗";
analyzer = new SimpleAnalyzer;
analyzer = new ComplexAnalyzer;
//analyzer = new MaxWordAnalyzer;
dir = new RAMDirectory;
IndexWriter iw = new IndexWriter(dir, analyzer);
Document doc = new Document;
doc.add(new Field("txt", txt, Field.Store.YES, Field.Index.ANALYZED));
iw.addDocument(doc);
iw.commit;
iw.optimize;
iw.close;
}
public void testSearch {
try {
IndexSearcher searcher = new IndexSearcher(dir);
QueryParser qp = new QueryParser("txt", analyzer);
Query q = qp.parse("西伯利亚"); //2008年底
System.out.println(q);
TopDocs tds = searcher.search(q, 10);
System.out.println("======size:"+tds.totalHits+"========");
for(ScoreDoc sd : tds.scoreDocs) {
System.out.println(sd.score);
System.out.println(searcher.doc(sd.doc).get("txt"));
}
} catch (CorruptIndexException e) {
e.printStackTrace;
} catch (IOException e) {
e.printStackTrace;
} catch (ParseException e) {
e.printStackTrace;
}
}
}
运行结果:
2009-4-26 22:41:02 com.chenlb.mmseg4j.Dictionary getDefalutPath
信息: look up in mmseg.dic.path=null
2009-4-26 22:41:02 com.chenlb.mmseg4j.Dictionary getDefalutPath
信息: look up in user.dir=M:\workspace\mmseg4j/data
2009-4-26 22:41:02 com.chenlb.mmseg4j.Dictionary loadDic
信息: chars loaded time=391ms, line=12638, on file=M:\workspace\mmseg4j\data\chars.dic
2009-4-26 22:41:02 com.chenlb.mmseg4j.Dictionary loadDic
信息: words loaded time=16ms, line=1, on file=M:\workspace\mmseg4j\data\words-my.dic
2009-4-26 22:41:06 com.chenlb.mmseg4j.Dictionary loadDic
信息: words loaded time=3406ms, line=157202, on file=M:\workspace\mmseg4j\data\words.dic
2009-4-26 22:41:06 com.chenlb.mmseg4j.Dictionary loadDic
信息: sort time=0ms
2009-4-26 22:41:06 com.chenlb.mmseg4j.Dictionary loadDic
信息: load dic use time=3844ms
2009-4-26 22:41:06 com.chenlb.mmseg4j.Dictionary loadUnit
信息: unit loaded time=16ms, line=22, on file=M:\workspace\mmseg4j\data\units.dic
txt:西伯利亚
======size:1========
0.047945753
京华时报1月23日报道 昨天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。
上面的运行环境是 lucene 2.4 的。
分享到:
相关推荐
mmseg4j-solr-2.3.0.jar 支持 solr5.x 版本以上 分词器本身并未做升级还是mmseg4j-core-1.10.0 和 mmseg4j-analysis-1.9.1.jar为了方便也一并上传
中文分词 solr 支持solr 4.7
lucene中文分词 mmseg4j-1.8.5与lucene3.1兼容
mmseg4j-solr-2.3.0-with-mmseg4j-core是Solr的中文分词包,该压缩包含有mmseg4j-core-1.10.0.jar和mmseg4j-solr-2.3.0.jar。
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex...
Lucene中文分词 mmseg4j 2.3 源码
中文分词器 mmseg4j1.9.1.zip 配合solr 使用
在com.chenlb.mmseg4j.analysis包里扩展lucene analyzer。 MMSegAnalyzer默认使用max-word方式分词(还有:ComplexAnalyzer, SimplexAnalyzer, MaxWordAnalyzer)。
lucene整合mmseg4j实例,内置lucene项目实例.
mmseg4j-1.8.5中文分词器API
兼容solr4.10.3的mmseg4j-1.9.1分词器
mmseg4j-1.9.1 分词器 包含修复bug的mmseg4j-analysis-1.9.1.jar dist\修复bug下是修复bug后的mmseg4j-analysis-1.9.1.jar
本人用的solr是4.10的,经过本人亲测可用,放心下载,包含以下3个jar包: mmseg4j-analysis-1.9.1.jar, mmseg4j-core-1.9.1.jar, mmseg4j-solr-2.2.0.jar
mmseg4j-core, 用于java中文分析器的mmseg4j核心 MMSEG <dependency> <groupId>com.chenlb.mmseg4j</groupId> <artifactId>mmseg4j-core</artif
欢迎下载mmseg4j分词器jar包
mmseg4j 2.3 jar包 lucene中文分词器
mmseg4j-analysis-1.9.2 无bug中文分词
mmseg4j中文分词器
mmseg4j-1.9.1分词器,找了很久才找到,共享一下!