国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ElasticSearch 學(xué)習(xí)8 :ik分詞器的擴(kuò)展,及java調(diào)用ik分詞器的analyzer

這篇具有很好參考價(jià)值的文章主要介紹了ElasticSearch 學(xué)習(xí)8 :ik分詞器的擴(kuò)展,及java調(diào)用ik分詞器的analyzer。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.前言:

上篇已經(jīng)說過ik的集成,這篇說下ik的實(shí)際使用

2.2、IK分詞器測(cè)試

IK提供了兩個(gè)分詞算法ik_smart 和 ik_max_word

  • ik_smart:為最少切分
  • ik_max_word:為最細(xì)粒度劃分。
2.2.1、最小切分示例
 
  1. #分詞器測(cè)試ik_smart

  2. POST _analyze{"analyzer":"ik_smart","text":"我是中國(guó)人"}

?結(jié)果:

{
	"tokens": [
		{
			"token": "我",
			"start_offset": 0,
			"end_offset": 1,
			"type": "CN_CHAR",
			"position": 0
		},
		{
			"token": "是",
			"start_offset": 1,
			"end_offset": 2,
			"type": "CN_CHAR",
			"position": 1
		},
		{
			"token": "中國(guó)人",
			"start_offset": 2,
			"end_offset": 5,
			"type": "CN_WORD",
			"position": 2
		}
	]
}
 
2.2.2、最細(xì)切分示例
#分詞器測(cè)試ik_max_word

POST _analyze

{

"analyzer":"ik_max_word",

"text":"我是中國(guó)人"

}

結(jié)果:

{
	"tokens": [
		{
			"token": "我",
			"start_offset": 0,
			"end_offset": 1,
			"type": "CN_CHAR",
			"position": 0
		},
		{
			"token": "是",
			"start_offset": 1,
			"end_offset": 2,
			"type": "CN_CHAR",
			"position": 1
		},
		{
			"token": "中國(guó)人",
			"start_offset": 2,
			"end_offset": 5,
			"type": "CN_WORD",
			"position": 2
		},
		{
			"token": "中國(guó)",
			"start_offset": 2,
			"end_offset": 4,
			"type": "CN_WORD",
			"position": 3
		},
		{
			"token": "國(guó)人",
			"start_offset": 3,
			"end_offset": 5,
			"type": "CN_WORD",
			"position": 4
		}
	]
}

3、IK分詞器為何如此智能

????????通過上面的示例我們也看到了,這種中文的分詞效果是ES內(nèi)置的分詞器無法比擬的。那么它是如何做到的呢?不要過于驚訝,因?yàn)樵砥鋵?shí)非常簡(jiǎn)單,它是通過索引字典來達(dá)到的,這樣說可能比較抽象難懂,我們來實(shí)際看看ES的plugins/ik/config目錄:

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

3.1、ik分詞器的字典

????????看到那些*.dic結(jié)尾的文件了嗎?其實(shí)它就是dictionary(字典)的簡(jiǎn)寫,來實(shí)際看看字典內(nèi)容:如上圖。

????????實(shí)際的詞匯量是非常巨大的,根本不可能完全收錄到字典中。如果有需要,我們完全可以通過在字典文件中增加我們想要的詞語來擴(kuò)展我們自己的分詞規(guī)則。

4、擴(kuò)展ik分詞器的字典

示例:

????????“麻花疼”使用ik_smart、ik_max_word 分詞后的結(jié)果都是:麻花、疼。

? ?無法分詞為一個(gè)完整的“麻花疼”,因?yàn)閕k分詞器的詞典中沒有這個(gè)詞。示例如下圖:

?麻花疼

使用ik_smart分詞GET _analyze{"analyzer": "ik_smart", "text": "麻花疼"}

{
	"tokens": [
		
		{
			"token": "麻花",
			"start_offset": 0,
			"end_offset": 2,
			"type": "CN_WORD",
			"position": 1
		},
		{
			"token": "疼",
			"start_offset": 2,
			"end_offset": 3,
			"type": "CN_CHAR",
			"position": 2
		}
	]
}

如何將“麻花疼”分詞為一個(gè)完整的詞,需要將其添加到詞典中。

4.1、ik分詞器的配置文件目錄

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

?在plugins/elasticsearch-analysis-ik-6.8.2/config/config目錄下有ik分詞配置文件:

  • IKAnalyzer.cfg.xml,用來配置自定義的詞庫(kù)
  • main.dic,ik原生內(nèi)置的中文詞庫(kù),只要是這些單詞,都會(huì)被分在一起。
  • surname.dic,中國(guó)的姓氏。
  • suffix.dic,特殊(后綴)名詞,例如鄉(xiāng)、江、所、省等等。
  • preposition.dic,中文介詞,例如不、也、了、仍等等。
  • stopword.dic,英文停用詞庫(kù),例如a、an、and、the等。
  • quantifier.dic,單位名詞,如厘米、件、倍、像素等。
  • extra開頭的文件,是額外的詞庫(kù)。

4.2、IKAnalyzer.cfg.xml配置文件

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

4.3、新增字典配置文件,后綴為dic?

在新的字段配置文件my_ik.dic中添加新詞:“麻花疼”。

注意:詞庫(kù)的編碼必須是utf-8。

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

?4.4、將新增的配置文件添加到IK字典配置文件中,并重啟ES和KIBANA

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

?ES啟動(dòng)控制臺(tái)中會(huì)顯示已經(jīng)讀取到自定義字典:

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

再次查詢,該詞已經(jīng)成功識(shí)別?。

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

4.5、IK插件還支持熱更新:

IKAnalyzer.cfg.xml配置文件中的有如下配置:

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java

?其中?words_location?是指一個(gè) url,比如?http://yoursite.com/getCustomDict,該請(qǐng)求只需滿足以下兩點(diǎn)即可完成分詞熱更新。

  1. 該 http 請(qǐng)求需要返回兩個(gè)頭部(header),一個(gè)是?Last-Modified,一個(gè)是?ETag,這兩者都是字符串類型,只要有一個(gè)發(fā)生變化,該插件就會(huì)去抓取新的分詞進(jìn)而更新詞庫(kù)。
  2. 該 http 請(qǐng)求返回的內(nèi)容格式是一行一個(gè)分詞,換行符用?\n?即可。

滿足上面兩點(diǎn)要求就可以實(shí)現(xiàn)熱更新分詞了,不需要重啟es 。

????????可以將需自動(dòng)更新的熱詞放在一個(gè)?UTF-8?編碼的?.txt文件里,放在 nginx 或其他簡(jiǎn)易 http server 下,當(dāng)?.txt文件修改時(shí),http server 會(huì)在客戶端請(qǐng)求該文件時(shí)自動(dòng)返回相應(yīng)的 Last-Modified 和 ETag??梢粤硗庾鲆粋€(gè)工具來從業(yè)務(wù)系統(tǒng)提取相關(guān)詞匯,并更新這個(gè)?.txt文件。

5.java調(diào)用ik分詞器的analyzer:

這里是用httpClient實(shí)現(xiàn)的,沒用es的客戶端,網(wǎng)上找了半天也沒找到合適的文章,大多都是用es高亮客戶端,還得用索引庫(kù),費(fèi)勁感覺有點(diǎn)。自己用httpClient寫吧

  public static String httpPostNeedPassword(String json,String url,String username,
            String password) {
        String result = "";
        try {
            HttpClient httpClient = new HttpClient();
            PostMethod postMethod = new PostMethod(url);
            //需要驗(yàn)證
            UsernamePasswordCredentials creds = new UsernamePasswordCredentials(username, password);
            httpClient.getState().setCredentials(AuthScope.ANY, creds);
            StringRequestEntity requestEntity = new StringRequestEntity(json, "application/json", "UTF-8");
            postMethod.setRequestEntity(requestEntity);
            int i = httpClient.executeMethod(postMethod);
            InputStream inputStream = postMethod.getResponseBodyAsStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
            String s;
            StringBuffer sb = new StringBuffer();
            while ((s = br.readLine()) != null) {
                sb.append(s + "\n");
            }
            result = new String(sb.toString().getBytes(),"UTF-8");
            postMethod.releaseConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    @Test
    public void test(){
        String s = httpPostNeedPassword("{ \"analyzer\": \"ik_max_word\", \"text\":\"洛陽古跡風(fēng)景很好,是旅游勝地,毛澤東也去過,發(fā)呆著\" }", "http://123.57.220.31:9200/_analyze", "elastic", "mycomm123");
        System.out.println(s);
    }

結(jié)果:

java使用ik分詞器,elasticsearch,elasticsearch,學(xué)習(xí),java文章來源地址http://www.zghlxwxcb.cn/news/detail-761358.html

到了這里,關(guān)于ElasticSearch 學(xué)習(xí)8 :ik分詞器的擴(kuò)展,及java調(diào)用ik分詞器的analyzer的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ES-IK分詞器的概念和基本使用

    ES-IK分詞器的概念和基本使用

    ??ES IK分詞器是一種基于中文文本的分詞器,它是Elasticsearch中文分詞的一種實(shí)現(xiàn)。它采用了自然語言處理技術(shù),可以將中文文本進(jìn)行切分,抽取出其中的詞匯,從而提高搜索引擎對(duì)中文文本的搜索和檢索效率。 ??ES IK分詞器的原理是采用了一種叫做“正向最大匹配”(

    2024年02月16日
    瀏覽(26)
  • elasticsearch安裝中文分詞IK啟動(dòng)異常:java.nio.file.AccessDeniedException

    啟動(dòng)錯(cuò)誤信息如下: 問題原因:plugins中添加的ik目錄沒有權(quán)限; 解決方案:進(jìn)入elasticsearch容器對(duì)應(yīng)plugins目錄下,進(jìn)行 chmod 777 ik 授權(quán)即可。

    2024年02月03日
    瀏覽(24)
  • Elasticsearch基礎(chǔ)篇(五):創(chuàng)建es索引并學(xué)習(xí)分析器、過濾器、分詞器的作用和配置

    Elasticsearch基礎(chǔ)篇(五):創(chuàng)建es索引并學(xué)習(xí)分析器、過濾器、分詞器的作用和配置

    Elasticsearch 是一個(gè)分布式搜索和分析引擎,它使用JSON文檔來存儲(chǔ)數(shù)據(jù)。索引是Elasticsearch中數(shù)據(jù)的基本組織單元之一,下面是Elasticsearch索引相關(guān)的基本概念: 結(jié)構(gòu)元素 Elasticsearch MySQL 數(shù)據(jù)庫(kù) 索引(Index) 數(shù)據(jù)庫(kù)(Database) 表格 類型(Type)* 表(Table) 記錄/行 文檔(Document)

    2024年02月03日
    瀏覽(63)
  • ElasticSearch-使用IK分詞器進(jìn)行分詞

    ElasticSearch-使用IK分詞器進(jìn)行分詞

    使用KIbana測(cè)試IK分詞器 打開開發(fā)工具臺(tái) ik_smart 最少分詞器 分詞結(jié)果比較少 ik_max_word 顆粒度最細(xì)分詞器 分詞結(jié)果比較多,組成各種結(jié)果,窮盡詞庫(kù)的可能! 再看個(gè)例子,把我們的句子換成 超級(jí)喜歡魏一鶴學(xué)習(xí)Java 首先看最少分詞 然后是最細(xì)顆粒度分詞 問題來了 我們輸入超級(jí)喜

    2024年02月13日
    瀏覽(19)
  • elasticsearch IK分詞器

    elasticsearch IK分詞器

    說明:es默認(rèn)的分詞器對(duì)中文的識(shí)別不是特別好,一段話的分詞是一個(gè)一個(gè)漢字,這顯然沒有達(dá)到想要的結(jié)果。 可以安裝IK分詞器,兼容中文的分詞; 安裝 安裝IK分詞器,例如elasticsearch的容器名為es; (命令方式,安裝速度慢,網(wǎng)絡(luò)狀況不好非常容易失敗,而且會(huì)丟失文件,

    2024年02月16日
    瀏覽(17)
  • 【ElasticSearch 】IK 分詞器安裝

    【ElasticSearch 】IK 分詞器安裝

    Elasticsearch 要使用 ik,就要先構(gòu)建 ik 的 jar包,這里要用到 maven 包管理工具,而 maven 需要java 環(huán)境,而 Elasticsearch 內(nèi)置了jdk, 所以可以將JAVA_HOME設(shè)置為Elasticsearch 內(nèi)置的jdk 1)設(shè)置JAVA_HOME 2)準(zhǔn)備maven安裝包 上傳 maven 安裝包 3)解壓maven安裝包 tar xzf apache-maven-3.1.1-bin.tar.gz 4)設(shè)

    2024年02月07日
    瀏覽(21)
  • ElasticSearch-集成ik分詞器

    ElasticSearch-集成ik分詞器

    本文已收錄于專欄 《中間件合集》 ??我們?cè)陧?xiàng)目中集成了ElasticSearch服務(wù)之后,需要對(duì)內(nèi)容進(jìn)行分詞處理。這時(shí)候就需要用到分詞器。其實(shí)ElasticSearch服務(wù)自身也會(huì)帶有分詞器。ElasticSearch服務(wù)自帶的分詞器是單個(gè)字進(jìn)行分的。在我們的業(yè)務(wù)當(dāng)中要求對(duì)整個(gè)詞進(jìn)行拆分。這時(shí)

    2024年02月11日
    瀏覽(6)
  • elasticsearch 安裝 IK 中文分詞器插件提示找不到文件的異常(Exception in thread “main“ java.nio.file.NoSuchFileException)

    elasticsearch 安裝 IK 中文分詞器插件提示找不到文件的異常(Exception in thread “main“ java.nio.file.NoSuchFileException)

    錯(cuò)誤截圖 在命令行窗口,執(zhí)行如下命令安裝 IK 中文分詞器 失敗。 錯(cuò)誤日志 1、自己到github下載對(duì)應(yīng)版本的ik中文分詞器 上面命令中兩個(gè)插件版本號(hào)應(yīng)該和 Elasticsearch 的版本保持一致,我現(xiàn)在用的是 7.14.1 版本。 首先版本和命令是對(duì)得上的。 命令行窗口通過命令下載失敗的話

    2024年04月11日
    瀏覽(29)
  • Elasticsearch中使用IK分詞配置

    在 Elasticsearch 中,可以使用 IK 分詞器來替代默認(rèn)的 text 類型。IK 分詞器是一個(gè)開源的中文分詞器,支持中文分詞和英文分詞。 要將默認(rèn)的 text 類型修改為 IK 分詞器,需要進(jìn)行以下步驟: 安裝 IK 分詞器插件: 下載 IK 分詞器插件,可以從 GitHub 上的 elasticsearch-analysis-ik 頁(yè)面下

    2024年02月13日
    瀏覽(17)
  • Elasticsearch之ik中文分詞篇

    es在7.3版本已經(jīng)支持中文分詞,由于中文分詞只能支持到單個(gè)字進(jìn)行分詞,不夠靈活與適配我們平常使用習(xí)慣,所以有很多對(duì)應(yīng)中文分詞出現(xiàn),最近使用的是ik分詞器,就說說它吧。 安裝可以百度下有很多教程,需要注意的是ik分詞器的版本要跟es版本對(duì)應(yīng)上,避免出現(xiàn)不必要

    2024年02月02日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包