真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

lucene4.7分詞器怎么實(shí)現(xiàn)

本篇內(nèi)容主要講解“l(fā)ucene4.7分詞器怎么實(shí)現(xiàn)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“l(fā)ucene4.7分詞器怎么實(shí)現(xiàn)”吧!

成都創(chuàng)新互聯(lián)公司是專業(yè)的崇州網(wǎng)站建設(shè)公司,崇州接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行崇州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

首先擺在我們面前的第一個必須要解決的問題,就是關(guān)于中文分詞的問題,因?yàn)長ucene畢竟是國外的大牛們開發(fā)的,顯然會比較側(cè)重英文文章,不過還好,在Lucene的下載包里同步了SmartCN的分詞器針對中文發(fā)行的,每一次Lucene有新的版本發(fā)行,這個包同時更新。 

筆者比較推薦的中文分詞器是IK分詞器,在進(jìn)入正式的講解之前,我們首先對Lucene里面內(nèi)置的幾個分析器做個了解. 

分析器類型基本介紹
WhitespaceAnalyzer以空格作為切詞標(biāo)準(zhǔn),不對語匯單元進(jìn)行其他規(guī)范化處理
SimpleAnalyzer以非字母符來分割文本信息,并將語匯單元統(tǒng)一為小寫形式,并去掉數(shù)字類型的字符
StopAnalyzer該分析器會去除一些常有a,the,an等等,也可以自定義禁用詞
StandardAnalyzerLucene內(nèi)置的標(biāo)準(zhǔn)分析器,會將語匯單元轉(zhuǎn)成小寫形式,并去除停用詞及標(biāo)點(diǎn)符號
CJKAnalyzer能對中,日,韓語言進(jìn)行分析的分詞器,對中文支持效果一般。
SmartChineseAnalyzer對中文支持稍好,但擴(kuò)展性差

評價一個分詞器的性能優(yōu)劣,關(guān)鍵是看它的切詞效率以及靈活性,及擴(kuò)展性,通常情況下一個良好的中文分詞器,應(yīng)該具備擴(kuò)展詞庫,禁用詞庫和同義詞庫,當(dāng)然最關(guān)鍵的是還得要與自己的業(yè)務(wù)符合,因?yàn)橛行r候我們用不到一些自定義詞庫,所以選擇分詞器的時候就可以不考慮這一點(diǎn)。IK官網(wǎng)發(fā)布的最新版IK分詞器對于Lucene的支持是不錯的,但是對于solr的支持就不夠好了,需要自己改源碼支持solr4.x的版本。筆者使用的另一個IK包是經(jīng)過一些人修改過的可以支持solr4.3的版本,并對擴(kuò)展詞庫,禁用詞庫,同義詞庫完全支持,而且在solr里面配置很簡單,只需要在schmal.xml進(jìn)行簡單配置,即可使用IK分詞器的強(qiáng)大的定制化功能。不過官網(wǎng)上IK作者發(fā)布的IK包在lucene里面確都不支持同義詞庫擴(kuò)展的功能,如果你想使用,得需要自己修改下源碼了,不過即使自己修改擴(kuò)展同義詞也是非常容易的。 


下面筆者給出使用官網(wǎng)最后一版發(fā)布的IK在Lucene中做的測試,筆者使用的已經(jīng)擴(kuò)展了同義詞庫部分。 

下面先看第一個純分詞的測試
 

package com.ikforlucene;

import java.io.StringReader;

import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;


public class Test {
    
     
    public static void main(String[] args)throws Exception {
                      //下面這個分詞器,是經(jīng)過修改支持同義詞的分詞器
          IKSynonymsAnalyzer analyzer=new IKSynonymsAnalyzer();
           String text="三劫散仙是一個菜鳥";
           TokenStream ts=analyzer.tokenStream("field", new StringReader(text));
            CharTermAttribute term=ts.addAttribute(CharTermAttribute.class);
            ts.reset();//重置做準(zhǔn)備
            while(ts.incrementToken()){
                System.out.println(term.toString());
            }
            ts.end();//
            ts.close();//關(guān)閉流
        
         
    }

}

運(yùn)行結(jié)果:

三
劫
散
仙
是
一個
菜鳥

第二步,測試擴(kuò)展詞庫,使三劫為一個詞,散仙為一個詞,需要在同義詞庫里添加三劫,散仙(注意是按行讀取的),注意保存的格式為UTF-8或無BOM格式即可
lucene4.7分詞器怎么實(shí)現(xiàn)

添加擴(kuò)展詞庫后運(yùn)行結(jié)果如下:

三劫
散仙
是
一個
菜鳥

第三步,測試禁用詞庫,我們把菜鳥二個字給屏蔽掉,每行一個詞,保存格式同上.
lucene4.7分詞器怎么實(shí)現(xiàn)

添加禁用詞庫后運(yùn)行結(jié)果如下:

三劫
散仙
是
一個

最后我們再來測試下,同義詞部分,現(xiàn)在筆者把河南人,洛陽人作為"一個"這個詞的同義詞,添加到同義詞庫中(筆者在這里僅僅是做一個測試,真正生產(chǎn)環(huán)境中的同義詞肯定是正式的),注意同義詞,也是按行讀取的,每行的同義詞之間使用逗號分割。

lucene4.7分詞器怎么實(shí)現(xiàn)

添加同義詞庫后運(yùn)行結(jié)果如下:

三劫
散仙
是
一個
河南人
洛陽人

至此,使用IK在Lucene4.3中大部分功能都已測試通過,下面給出擴(kuò)展同義詞部分的源碼,有興趣的道友們,可以參照借鑒下。

package com.ikforlucene;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.Map;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Tokenizer;
import org.apache.lucene.analysis.synonym.SynonymFilterFactory;
import org.apache.solr.core.SolrResourceLoader;
import org.wltea.analyzer.lucene.IKTokenizer;
/**
 * 可以加載同義詞庫的Lucene
 * 專用IK分詞器
 * 
 * 
 * */
public class IKSynonymsAnalyzer extends Analyzer {

     
    @Override
    protected TokenStreamComponents createComponents(String arg0, Reader arg1) {
        
        Tokenizer token=new IKTokenizer(arg1, true);//開啟智能切詞
        
        Map paramsMap=new HashMap();
        paramsMap.put("luceneMatchVersion", "LUCENE_43");
        paramsMap.put("synonyms", "E:\\同義詞\\synonyms.txt");
        SynonymFilterFactory factory=new SynonymFilterFactory(paramsMap);
         SolrResourceLoader loader=    new SolrResourceLoader("");
        try {
            factory.inform(loader);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
     
        return new TokenStreamComponents(token, factory.create(token));
    }
    
    
    

}

到此,相信大家對“l(fā)ucene4.7分詞器怎么實(shí)現(xiàn)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站名稱:lucene4.7分詞器怎么實(shí)現(xiàn)
URL分享:http://weahome.cn/article/ggopgo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部