<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——?dú)g迎訪問(wèn)rogerfan的博客,常來(lái)《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來(lái)的快樂(lè)!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問(wèn)題請(qǐng)與我聯(lián)系。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    支持英文、數(shù)字、中文(簡(jiǎn)體)混合分詞
    常用的數(shù)量和人名的匹配
    超過(guò)22萬(wàn)詞的詞庫(kù)整理
    實(shí)現(xiàn)正向最大匹配算法

    //采用正向最大匹配的中文分詞算法,相當(dāng)于分詞粒度等于0
    MMAnalyzer analyzer = new MMAnalyzer();

    //參數(shù)為分詞粒度:當(dāng)字?jǐn)?shù)等于或超過(guò)該參數(shù),且能成詞,該詞就被切分出來(lái)
    MMAnalyzer analyzer = new MMAnalyzer(2);


    //增加一個(gè)新詞典,采用每行一個(gè)詞的讀取方式
    MMAnalyzer.addDictionary(reader);

    //增加一個(gè)新詞
    MMAnalyzer.addWord(newWord);


     

    //刪除詞庫(kù)中的全部詞語(yǔ)(注意:非常危險(xiǎn)的操作,在沒(méi)有加載新的詞庫(kù)前所有的分詞都將失效)
    MMAnalyzer.clear();

    //詞庫(kù)中是否包含該詞
    MMAnalyzer.contains(String word);

    //從詞庫(kù)中移除該詞
    MMAnalyzer.removeWord(String word);

    //當(dāng)前詞庫(kù)中包含的詞語(yǔ)總數(shù)
    MMAnalyzer.size();


    view plaincopy to clipboardprint?
    package demo.analysis;   
     
    import java.io.IOException;   
     
    import jeasy.analysis.MMAnalyzer;   
     
    public class Segment   
    {   
     
    public static void main(String[] args)   
    {   
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"   
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"   
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。";   
     
    MMAnalyzer analyzer = new MMAnalyzer();   
    try   
    {   
    System.out.println(analyzer.segment(text, " | "));   
    }   
    catch (IOException e)   
    {   
    e.printStackTrace();   
    }   
    }   
    }  
    package demo.analysis;

    import java.io.IOException;

    import jeasy.analysis.MMAnalyzer;

    public class Segment
    {

    public static void main(String[] args)
    {
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。";

    MMAnalyzer analyzer = new MMAnalyzer();
    try
    {
    System.out.println(analyzer.segment(text, " | "));
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    }

    生成效果:

    據(jù) | 路透社 | 報(bào)道 | 印度尼西亞 | 社會(huì) | 事務(wù) | 部 | 官員 | 星期二 | 29日 | 表示 | 日惹 | 市 | 附近 | 當(dāng)?shù)貢r(shí)間 | 27日

    | 晨 | 5時(shí) | 53分 | 發(fā)生 | 里氏 | 6.2級(jí) | 地震 | 已經(jīng) | 造成 | 至少 | 5427人 | 死亡 | 20000 | 余人 | 受傷 | 近 | 20萬(wàn)人 | 無(wú)家可歸 |


    view plaincopy to clipboardprint?
    package demo.analysis;   
     
    import jeasy.analysis.MMAnalyzer;   
     
    import org.apache.lucene.analysis.Analyzer;   
    import org.apache.lucene.document.Document;   
    import org.apache.lucene.document.Field;   
    import org.apache.lucene.index.IndexWriter;   
    import org.apache.lucene.queryParser.QueryParser;   
    import org.apache.lucene.search.Hits;   
    import org.apache.lucene.search.IndexSearcher;   
    import org.apache.lucene.search.Query;   
    import org.apache.lucene.store.Directory;   
    import org.apache.lucene.store.RAMDirectory;   
     
    public class Segment   
    {   
     
    public static void main(String[] args)   
    {   
    String fieldName = "text";   
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"   
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"   
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。"; //檢索內(nèi)容   
     
    //采用正向最大匹配的中文分詞算法   
    Analyzer analyzer = new MMAnalyzer();   
     
    Directory directory = new RAMDirectory();   
    //Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);   
     
    try   
    {   
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);   
    iwriter.setMaxFieldLength(25000);   
    Document doc = new Document();   
    doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.TOKENIZED));   
    iwriter.addDocument(doc);   
    iwriter.close();   
     
    IndexSearcher isearcher = new IndexSearcher(directory);   
    QueryParser parser = new QueryParser(fieldName, analyzer);   
    Query query = parser.parse("印度尼西亞 6.2級(jí)地震");//檢索詞   
    Hits hits = isearcher.search(query);   
    System.out.println("命中:" + hits.length());   
     
    for (int i = 0; i < hits.length(); i++)   
    {   
    Document hitDoc = hits.doc(i);   
    System.out.println("內(nèi)容:" + hitDoc.get(fieldName));   
    }   
     
    isearcher.close();   
    directory.close();   
    }   
    catch (Exception e)   
    {   
    e.printStackTrace();   
    }   
    }   
     
    }  
    package demo.analysis;

    import jeasy.analysis.MMAnalyzer;

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.queryParser.QueryParser;
    import org.apache.lucene.search.Hits;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.Query;
    import org.apache.lucene.store.Directory;
    import org.apache.lucene.store.RAMDirectory;

    public class Segment
    {

    public static void main(String[] args)
    {
    String fieldName = "text";
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。"; //檢索內(nèi)容

    //采用正向最大匹配的中文分詞算法
    Analyzer analyzer = new MMAnalyzer();

    Directory directory = new RAMDirectory();
    //Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);

    try
    {
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
    iwriter.setMaxFieldLength(25000);
    Document doc = new Document();
    doc.add(new Field(fieldName, text, Field.Store.YES, Field.Index.TOKENIZED));
    iwriter.addDocument(doc);
    iwriter.close();

    IndexSearcher isearcher = new IndexSearcher(directory);
    QueryParser parser = new QueryParser(fieldName, analyzer);
    Query query = parser.parse("印度尼西亞 6.2級(jí)地震");//檢索詞
    Hits hits = isearcher.search(query);
    System.out.println("命中:" + hits.length());

    for (int i = 0; i < hits.length(); i++)
    {
    Document hitDoc = hits.doc(i);
    System.out.println("內(nèi)容:" + hitDoc.get(fieldName));
    }

    isearcher.close();
    directory.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    生成效果:

    命中:1
    內(nèi)容:據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生

    的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,20000余人受傷,近20萬(wàn)人無(wú)家可歸。


    view plaincopy to clipboardprint?
    package demo.analysis;   
     
    import jeasy.analysis.MMAnalyzer;   
     
    import org.apache.lucene.analysis.Analyzer;   
    import org.apache.lucene.analysis.TokenStream;   
    import org.apache.lucene.document.Document;   
    import org.apache.lucene.document.Field;   
    import org.apache.lucene.index.IndexReader;   
    import org.apache.lucene.index.IndexWriter;   
    import org.apache.lucene.index.TermPositionVector;   
    import org.apache.lucene.queryParser.QueryParser;   
    import org.apache.lucene.search.Hits;   
    import org.apache.lucene.search.IndexSearcher;   
    import org.apache.lucene.search.Query;   
    import org.apache.lucene.search.highlight.Highlighter;   
    import org.apache.lucene.search.highlight.QueryScorer;   
    import org.apache.lucene.search.highlight.TokenSources;   
    import org.apache.lucene.store.Directory;   
    import org.apache.lucene.store.RAMDirectory;   
     
    public class Segment   
    {   
     
    public static void main(String[] args)   
    {   
    String fieldName = "text";   
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"   
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"   
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。"; //檢索內(nèi)容   
     
    //采用正向最大匹配的中文分詞算法   
    Analyzer analyzer = new MMAnalyzer();   
     
    Directory directory = new RAMDirectory();   
    //Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);   
     
    try   
    {   
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);   
    iwriter.setMaxFieldLength(25000);   
    Document doc = new Document();   
    doc.add(new Field(fieldName, text, Field.Store.YES,   
    Field.Index.TOKENIZED,   
    Field.TermVector.WITH_POSITIONS_OFFSETS));   
    iwriter.addDocument(doc);   
    iwriter.close();   
     
    IndexSearcher isearcher = new IndexSearcher(directory);   
    QueryParser parser = new QueryParser(fieldName, analyzer);   
    Query query = parser.parse("印度尼西亞 6.2級(jí)地震");//檢索詞   
    Hits hits = isearcher.search(query);   
    System.out.println("命中:" + hits.length());   
     
    Highlighter highlighter = new Highlighter(new QueryScorer(query));   
    for (int i = 0; i < hits.length(); i++)   
    {   
    text = hits.doc(i).get(fieldName);   
    TermPositionVector tpv = (TermPositionVector) IndexReader.open(   
    directory).getTermFreqVector(hits.id(i), fieldName);   
    TokenStream tokenStream = TokenSources.getTokenStream(tpv);   
    String result = highlighter.getBestFragments(tokenStream, text, 3, "...");   
    System.out.println("內(nèi)容:" + result);   
    }   
     
    isearcher.close();   
    directory.close();   
    }   
    catch (Exception e)   
    {   
    e.printStackTrace();   
    }   
    }   
     
    }  
    package demo.analysis;

    import jeasy.analysis.MMAnalyzer;

    import org.apache.lucene.analysis.Analyzer;
    import org.apache.lucene.analysis.TokenStream;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.IndexReader;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.index.TermPositionVector;
    import org.apache.lucene.queryParser.QueryParser;
    import org.apache.lucene.search.Hits;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.Query;
    import org.apache.lucene.search.highlight.Highlighter;
    import org.apache.lucene.search.highlight.QueryScorer;
    import org.apache.lucene.search.highlight.TokenSources;
    import org.apache.lucene.store.Directory;
    import org.apache.lucene.store.RAMDirectory;

    public class Segment
    {

    public static void main(String[] args)
    {
    String fieldName = "text";
    String text = "據(jù)路透社報(bào)道,印度尼西亞社會(huì)事務(wù)部一官員星期二(29日)表示,"
    + "日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的里氏6.2級(jí)地震已經(jīng)造成至少5427人死亡,"
    + "20000余人受傷,近20萬(wàn)人無(wú)家可歸。"; //檢索內(nèi)容

    //采用正向最大匹配的中文分詞算法
    Analyzer analyzer = new MMAnalyzer();

    Directory directory = new RAMDirectory();
    //Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);

    try
    {
    IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
    iwriter.setMaxFieldLength(25000);
    Document doc = new Document();
    doc.add(new Field(fieldName, text, Field.Store.YES,
    Field.Index.TOKENIZED,
    Field.TermVector.WITH_POSITIONS_OFFSETS));
    iwriter.addDocument(doc);
    iwriter.close();

    IndexSearcher isearcher = new IndexSearcher(directory);
    QueryParser parser = new QueryParser(fieldName, analyzer);
    Query query = parser.parse("印度尼西亞 6.2級(jí)地震");//檢索詞
    Hits hits = isearcher.search(query);
    System.out.println("命中:" + hits.length());

    Highlighter highlighter = new Highlighter(new QueryScorer(query));
    for (int i = 0; i < hits.length(); i++)
    {
    text = hits.doc(i).get(fieldName);
    TermPositionVector tpv = (TermPositionVector) IndexReader.open(
    directory).getTermFreqVector(hits.id(i), fieldName);
    TokenStream tokenStream = TokenSources.getTokenStream(tpv);
    String result = highlighter.getBestFragments(tokenStream, text, 3, "...");
    System.out.println("內(nèi)容:" + result);
    }

    isearcher.close();
    directory.close();
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }

    }
     
    生成效果:

    命中:1
    內(nèi)容:據(jù)路透社報(bào)道,<B>印度尼西亞</B>社會(huì)事務(wù)部一官員星期二(29日)表示,日惹市附近當(dāng)?shù)貢r(shí)間27日晨5時(shí)53分發(fā)生的

    里氏<B>6.2級(jí)</B><B>地震</B>已經(jīng)造成至少5427人死亡,20000余人受傷,近20萬(wàn)人無(wú)家可歸


    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/Java2King/archive/2010/01/08/5155878.aspx

     

    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/xiaoping8411/archive/2010/03/30/5435134.aspx

    posted on 2010-06-21 10:10 rogerfan 閱讀(3011) 評(píng)論(0)  編輯  收藏 所屬分類: 【開(kāi)源技術(shù)】
    主站蜘蛛池模板: 中出五十路免费视频| 在线视频亚洲一区| 国产自国产自愉自愉免费24区| 可以免费观看的一级毛片| 亚洲精品中文字幕| 日本久久久免费高清| 亚洲av无码一区二区三区在线播放| 妞干网在线免费观看| 亚洲最大的成人网站| 免费的一级黄色片| 在线看亚洲十八禁网站| 亚洲精品无码成人片在线观看| 成人一级免费视频| 国产亚洲精品一品区99热| 日本在线免费观看| 亚洲第一区视频在线观看| 亚色九九九全国免费视频| 最新亚洲卡一卡二卡三新区| 日本黄色免费观看| 一区二区三区精品高清视频免费在线播放 | 37pao成人国产永久免费视频 | 羞羞网站免费观看| 国产日韩成人亚洲丁香婷婷| 免费无码又爽又刺激一高潮| 亚洲午夜免费视频| 免费一本色道久久一区| 国产精品亚洲va在线观看| a级亚洲片精品久久久久久久| 久久久久久AV无码免费网站| 亚洲中文字幕无码中文| 亚洲成av人在片观看| 久久精品乱子伦免费| 亚洲偷自拍另类图片二区| 亚洲国产精品一区二区三区久久 | 亚洲娇小性色xxxx| 免费女人18毛片a级毛片视频| 182tv免费视频在线观看| 亚洲一区二区三区高清视频| 亚洲av中文无码| 91精品国产免费入口| 美国免费高清一级毛片|