`
xypcn
  • 浏览: 8470 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Lucene + mmseg4j 中文分词记要

阅读更多

http://javadoc.org.cn/home.php?mod=space&uid=2&do=blog&id=19

package test;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.util.Version;
import org.junit.Test;

import com.tuyard.groupen.SpiderImpl;

public class GoodsSearch {

 @Test
 public void testQuery() {
  try {

   Directory indexDirectory = FSDirectory.open(SpiderImpl.indexDateDir);
   IndexSearcher searcher = new IndexSearcher(indexDirectory, true);

   BooleanQuery query = new BooleanQuery();
   Query termQuery = new TermQuery(new Term("city", String.valueOf(3))); // 基本/精确
                                      // 查询
   query.add(termQuery, Occur.MUST);// 根据索引中的document生成时的设置,可以实现精确记录
   QueryParser qp = new QueryParser(Version.LUCENE_29, "content", SpiderImpl.Analyzer);
   Query qcontent = qp.parse("东北");
   query.add(qcontent, Occur.MUST);
   //
   TopDocs tds = searcher.search(query, 10);
   // request.setAttribute("paging", Paging.getPagingString(tds.totalHits,
   // pageSize, cpage, "/q.htm?p=$&q=" + URLEncoder.encode(str, "utf-8") +
   // ".htm"));
   StringBuffer sb = new StringBuffer();
   for (ScoreDoc sd : tds.scoreDocs) {
    System.out.println(sd.score);
    sb.append(searcher.doc(sd.doc).get("id")).append(",");
    System.out.println(searcher.doc(sd.doc).get("id"));
   }
   System.out.println("==" + sb.toString());
   // String sql = "select * from TB_Goods where id in(" + sb + ")";
   // request.setAttribute("list", objs[2]);
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 @Test
 public void testBuilder() {
  try {
   String txt = "京华时报1月23日报道 昨天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。";
   IndexWriter iwriter = new IndexWriter(Search.goodsIndex, Search.Analyzer, true,
     IndexWriter.MaxFieldLength.LIMITED);

   Document doc = new Document();
   doc.add(new Field("txt", txt, Field.Store.YES, Field.Index.ANALYZED));
   iwriter.addDocument(doc);
   iwriter.commit();
   iwriter.optimize();
   iwriter.close();

  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 @Test
 public void testSearch() {
  try {
   IndexSearcher searcher = new IndexSearcher(Search.goodsIndex, true);
   QueryParser qp = new QueryParser(Version.LUCENE_29, "txt", Search.Analyzer);
   Query q = qp.parse("西伯利亚");
   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 (Exception e) {
   e.printStackTrace();
  }

 }
}

 



相关的jar文件: http://www.apache.org/dist/lucene/java/lucene-2.9.3.zip


http://code.google.com/p/mmseg4j/

 

分享到:
评论

相关推荐

    mmseg4j分词器

    在com.chenlb.mmseg4j.analysis包里扩展lucene analyzer。 MMSegAnalyzer默认使用max-word方式分词(还有:ComplexAnalyzer, SimplexAnalyzer, MaxWordAnalyzer)。

    mmseg4j1.8.4分词工具

    mmseg4j1.8.4分词工具,可以方便的集成在lucene后者solr中。

    MMseg4j中文分词词库

    本人从搜狗词库下载后转化为Lucene中文分词所需的词库,里面搜集的都是官方推荐的内容本人亲测可用。使用Solr5.2.1测试

    mmseg4j-1.8.5

    lucene中文分词 mmseg4j-1.8.5与lucene3.1兼容

    mmseg4j分词

    mmseg4j分词,比较精确,可以跟lucene里面用

    mmseg4j-solr-2.3.0&mmseg4j;-core.zip

    mmseg4j-core-1.10.0+mmseg4j-solr-2.3.0()mmseg4j-solr-2.3.0.jar 要求 lucene/solr [5.0, ])

    mmseg4j 2.3 源码

    Lucene中文分词 mmseg4j 2.3 源码

    mmseg4j-1.9.1

    mmseg4j-1.9.1分词器,找了很久才找到,共享一下!

    分词器mmseg4j 1.9.0.jar

    mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex...

    mmseg4j 2.3 jar包

    mmseg4j 2.3 jar包 lucene中文分词器

    基于Lucene的中文分词器代码paoding,IK,imdict,mmseg4j

    基于Lucene的中文分词器代码paoding,IK,imdict,mmseg4j。测试可运行,输入一个段落,每个分词器的分词结果不同,可得到结果和所需时间。

    兼容solr4.10.2的ik-mmseg4j-paoding分词器

    能兼容solr-4.10.2的分词器,大礼包...包括IK分词器,mmseg4j分词器,庖丁分词器.都是经本人测试可用,其中mmseg4j与庖丁都是下载源码,修改重编译并测试生成的.希望大家喜欢.至于与solr的整合方式,网上很多,这里就不介绍了.

    mmseg4j-all-1.8.5-with-dic

    lucene中文分词工具包,自己用ant编译成功的。可以进行定制的分词器,同义词开发。作为工具包使用。官网没有提供,组要自己编译,方便用传上来

    mmseg4j-1.8.3.zip

    mmseg4j lucene 分词算法,对以往的版进行了大优化

    mmseg4j-all-with-dic-1.8.6-sources.jar和mmseg4j-all-with-dic-1.8.6.jar

    学习Lucene,中文分词必备jar包。内部有文档,大大提高开发效率

    solr 分词器 mmseg4j IKAnalyzer

    solr 分词器 mmseg4j IKAnalyzer

    分词lucene

    lucene官网: http://lucene.apache.org ... https://code.google.com/p/mmseg4j/ (mmseg4j-1.9.1.v20130120-SNAPSHOT.zip) 查看分词库: http://code.google.com/p/luke/downloads/list (lukeall-4.0.0-ALPHA.jar )

Global site tag (gtag.js) - Google Analytics