自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Elasticsearch 默認(rèn)配置 IK 及 Java AnalyzeRequestBuilder 使用

開發(fā) 開發(fā)工具
Elasticsearch-analysis-ik 則是將 IK Analyzer 集成 Elasticsearch 的插件,并支持自定義詞典。

本文提綱

一、什么是 Elasticsearch-analysis-ik

二、默認(rèn)配置 IK

三、使用 AnalyzeRequestBuilder 獲取分詞結(jié)果

四、小結(jié)

前言

《Elasticsearch 和插件 elasticsearch-head 安裝詳解》 文章中,我使用的是 Elasticsearch 5.3.x。這里我改成了 ElasticSearch 2.3.2。是因?yàn)榘姹緦?duì)應(yīng)關(guān)系 https://github.com/spring-projects/spring-data-elasticsearch/wiki/Spring-Data-Elasticsearch---Spring-Boot---version-matrix:

  1. Spring Boot Version (x) Spring Data Elasticsearch Version (y) Elasticsearch Version (z)  
  2. x <= 1.3.5 y <= 1.3.4 z <= 1.7.2*  
  3. x >= 1.4.x 2.0.0 <=y < 5.0.0** 2.0.0 <= z < 5.0.0** 

* - 只需要你修改下對(duì)應(yīng)的 pom 文件版本號(hào)

** - 下一個(gè) ES 的版本會(huì)有重大的更新

這里可以看出,5.3.x 不在第二行范圍內(nèi)。因此這里我講下,如何在 ElasticSearch 2.3.2 中默認(rèn)配置 IK。

一、什么是 Elasticsearch-analysis-ik

了解什么是 Elasticsearch-analysis-ik,首先了解什么是 IK Analyzer。 IK Analyzer 是基于 lucene 實(shí)現(xiàn)的分詞開源框架。官方地址:https://code.google.com/p/ik-analyzer/

Elasticsearch-analysis-ik 則是將 IK Analyzer 集成 Elasticsearch 的插件,并支持自定義詞典。GitHub 地址:https://github.com/medcl/elasticsearch-analysis-ik。特性支持:

分析器 Analyzer: ik_smart 或 ik_max_word

分詞器 Tokenizer: ik_smart 或 ik_max_word

二、默認(rèn)配置 IK

在 Elasticsearch-analysis-ik 官網(wǎng)中可以看到,其中版本需要對(duì)應(yīng):

  1. IK版    ES版本 
  2. 主 5.x -> master 
  3. 5.3.2    5.3.2 
  4. 5.2.2    5.2.2 
  5. 5.1.2    5.1.2 
  6. 1.10.1    2.4.1 
  7. 1.9.5    2.3.5 
  8. 1.8.1    2.2.1 
  9. 1.7.0    2.1.1 
  10. 1.5.0    2.0.0 
  11. 1.2.6    1.0.0 
  12. 1.2.5    0.90.x 
  13. 1.1.3    0.20.x 
  14. 1.0.0    0.16.2 -> 0.19.0 

這里使用的是 Elasticsearch-analysis-ik 1.9.2,支持 ElasticSearch 2.3.2。下載地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v1.9.2/elasticsearch-analysis-ik-1.9.2.zip,下載成功后進(jìn)行安裝。

解壓 zip 文件,復(fù)制里面的內(nèi)容到 elasticsearch-2.3.2/plugins/ik。

  1. cd  elasticsearch-2.3.2/plugins 
  2. mkdir ik 
  3. cp ... 

在 elasticsearch-2.3.2/config/elasticsearch.yml 增加配置:

  1. index.analysis.analyzer.default.tokenizer : "ik_max_word"  
  2. index.analysis.analyzer.default.type: "ik" 

配置默認(rèn)分詞器為 ik,并指定分詞器為 ik_max_word。

然后重啟 ES 即可。驗(yàn)證 IK 是否成功安裝,訪問下

localhost:9200/_analyze?analyzer=ik&pretty=true&text=泥瓦匠的博客是bysocket.com

可以得到下面的結(jié)果集:

  1.     "tokens": [ 
  2.         { 
  3.             "token""泥瓦匠"
  4.             "start_offset": 0, 
  5.             "end_offset": 3, 
  6.             "type""CN_WORD"
  7.             "position": 0 
  8.         }, 
  9.         { 
  10.             "token""泥"
  11.             "start_offset": 0, 
  12.             "end_offset": 1, 
  13.             "type""CN_WORD"
  14.             "position": 1 
  15.         }, 
  16.         { 
  17.             "token""瓦匠"
  18.             "start_offset": 1, 
  19.             "end_offset": 3, 
  20.             "type""CN_WORD"
  21.             "position": 2 
  22.         }, 
  23.         { 
  24.             "token""匠"
  25.             "start_offset": 2, 
  26.             "end_offset": 3, 
  27.             "type""CN_WORD"
  28.             "position": 3 
  29.         }, 
  30.         { 
  31.             "token""博客"
  32.             "start_offset": 4, 
  33.             "end_offset": 6, 
  34.             "type""CN_WORD"
  35.             "position": 4 
  36.         }, 
  37.         { 
  38.             "token""bysocket.com"
  39.             "start_offset": 8, 
  40.             "end_offset": 20, 
  41.             "type""LETTER"
  42.             "position": 5 
  43.         }, 
  44.         { 
  45.             "token""bysocket"
  46.             "start_offset": 8, 
  47.             "end_offset": 16, 
  48.             "type""ENGLISH"
  49.             "position": 6 
  50.         }, 
  51.         { 
  52.             "token""com"
  53.             "start_offset": 17, 
  54.             "end_offset": 20, 
  55.             "type""ENGLISH"
  56.             "position": 7 
  57.         } 
  58.     ] 

記得在Docker 容器安裝時(shí),需要對(duì)應(yīng)的端口開發(fā)。

三、使用 AnalyzeRequestBuilder 獲取分詞結(jié)果

ES 中默認(rèn)配置 IK 后,通過 Rest HTTP 的方式我們可以進(jìn)行得到分詞結(jié)果。那么在 Spring Boot 和提供的客戶端依賴 spring-data-elasticsearch 中如何獲取到分詞結(jié)果。

加入依賴 pom.xml

  1. <!-- Spring Boot Elasticsearch 依賴 --> 
  2.         <dependency> 
  3.             <groupId>org.springframework.boot</groupId> 
  4.             <artifactId>spring-boot-starter-data-elasticsearch</artifactId> 
  5.         </dependency> 

在 application.properties 配置 ES 的地址:

  1. # ES 
  2. spring.data.elasticsearch.repositories.enabled = true 
  3. spring.data.elasticsearch.cluster-nodes = 127.0.0.1:9300 

然后創(chuàng)建一個(gè)方法,入?yún)⑹撬阉髟~,返回的是分詞結(jié)果列表。

  1. @Autowired 
  2.    private ElasticsearchTemplate elasticsearchTemplate; 
  3.    /** 
  4.     * 調(diào)用 ES 獲取 IK 分詞后結(jié)果 
  5.     * 
  6.     * @param searchContent 
  7.     * @return 
  8.     */ 
  9.    private List<String> getIkAnalyzeSearchTerms(String searchContent) { 
  10.        // 調(diào)用 IK 分詞分詞 
  11.        AnalyzeRequestBuilder ikRequest = new AnalyzeRequestBuilder(elasticsearchTemplate.getClient(), 
  12.                AnalyzeAction.INSTANCE,"indexName",searchContent); 
  13.        ikRequest.setTokenizer("ik"); 
  14.        List<AnalyzeResponse.AnalyzeToken> ikTokenList = ikRequest.execute().actionGet().getTokens(); 
  15.        // 循環(huán)賦值 
  16.        List<String> searchTermList = new ArrayList<>(); 
  17.        ikTokenList.forEach(ikToken -> { searchTermList.add(ikToken.getTerm()); }); 
  18.        return searchTermList; 
  19.    } 

indexName 這里是指在 ES 設(shè)置的索引名稱。

從容器注入的 ElasticsearchTemplate Bean 中獲取 Client ,再通過 AnalyzeRequestBuilder 分析請(qǐng)求類型中進(jìn)行分詞并獲取分詞結(jié)果 AnalyzeResponse.AnalyzeToken 列表。

四、小結(jié)

默認(rèn)配置了 IK 分詞器,則 DSL 去 ES 查詢時(shí)會(huì)自動(dòng)調(diào)用 IK 分詞。

如果想要自定義詞庫,比如比較偏的領(lǐng)域性。

【本文為51CTO專欄作者“李強(qiáng)強(qiáng)”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過51CTO聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來源: 51CTO專欄
相關(guān)推薦

2021-04-12 08:17:12

ElasticSear分詞中文

2021-09-03 11:26:39

分詞器ElasticSear

2024-08-02 11:00:00

分詞器搜索查詢

2015-05-12 16:31:22

Elasticsear開源分布式搜索引擎

2023-11-10 08:17:01

分布式搜索引擎

2023-07-03 15:55:05

語法jpa狀態(tài)

2009-06-26 17:37:37

JBOSS配置

2023-03-13 23:48:31

二進(jìn)制包ES

2013-07-08 15:56:51

ForemanCentOS 6.4

2020-09-07 11:30:47

ElasticSear索引Linux

2021-03-18 15:10:42

ElasticSearBeta日志

2023-02-02 09:47:39

estext類型

2021-09-08 15:09:29

鴻蒙HarmonyOS應(yīng)用

2022-12-30 09:12:55

查詢es搜索值

2021-06-09 09:36:18

DjangoElasticSearLinux

2021-05-11 09:02:34

OpenSearch存儲(chǔ)Elastcsearc

2024-02-29 08:02:00

2024-08-01 10:10:24

MySQL場景搜索

2010-10-29 09:36:18

ORACLE用戶

2019-12-24 10:12:09

數(shù)據(jù)庫工具技術(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)