成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Elasticsearch 默認配置 IK 及 Java AnalyzeRequestBuilder 使用

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

本文提綱

一、什么是 Elasticsearch-analysis-ik

二、默認配置 IK

三、使用 AnalyzeRequestBuilder 獲取分詞結果

四、小結

前言

《Elasticsearch 和插件 elasticsearch-head 安裝詳解》 文章中,我使用的是 Elasticsearch 5.3.x。這里我改成了 ElasticSearch 2.3.2。是因為版本對應關系 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** 

* - 只需要你修改下對應的 pom 文件版本號

** - 下一個 ES 的版本會有重大的更新

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

一、什么是 Elasticsearch-analysis-ik

了解什么是 Elasticsearch-analysis-ik,首先了解什么是 IK Analyzer。 IK Analyzer 是基于 lucene 實現(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

二、默認配置 IK

在 Elasticsearch-analysis-ik 官網中可以看到,其中版本需要對應:

  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,下載成功后進行安裝。

解壓 zip 文件,復制里面的內容到 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" 

配置默認分詞器為 ik,并指定分詞器為 ik_max_word。

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

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

可以得到下面的結果集:

  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 容器安裝時,需要對應的端口開發(fā)。

三、使用 AnalyzeRequestBuilder 獲取分詞結果

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

加入依賴 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)建一個方法,入參是搜索詞,返回的是分詞結果列表。

  1. @Autowired 
  2.    private ElasticsearchTemplate elasticsearchTemplate; 
  3.    /** 
  4.     * 調用 ES 獲取 IK 分詞后結果 
  5.     * 
  6.     * @param searchContent 
  7.     * @return 
  8.     */ 
  9.    private List<String> getIkAnalyzeSearchTerms(String searchContent) { 
  10.        // 調用 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 設置的索引名稱。

從容器注入的 ElasticsearchTemplate Bean 中獲取 Client ,再通過 AnalyzeRequestBuilder 分析請求類型中進行分詞并獲取分詞結果 AnalyzeResponse.AnalyzeToken 列表。

四、小結

默認配置了 IK 分詞器,則 DSL 去 ES 查詢時會自動調用 IK 分詞。

如果想要自定義詞庫,比如比較偏的領域性。

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

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

責任編輯:武曉燕 來源: 51CTO專欄
相關推薦

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

二進制包ES

2013-07-08 15:56:51

ForemanCentOS 6.4

2020-09-07 11:30:47

ElasticSear索引Linux

2023-02-02 09:47:39

estext類型

2021-03-18 15:10:42

ElasticSearBeta日志

2021-09-08 15:09:29

鴻蒙HarmonyOS應用

2022-12-30 09:12:55

查詢es搜索值

2021-06-09 09:36:18

DjangoElasticSearLinux

2025-07-02 09:00:24

ES運維JSON

2024-08-01 10:10:24

MySQL場景搜索

2021-05-11 09:02:34

OpenSearch存儲Elastcsearc

2024-02-29 08:02:00

2010-10-29 09:36:18

ORACLE用戶
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 伊人网影院| 亚洲一区二区三区在线播放 | 成人网视频 | 成年女人免费v片 | 日韩欧美在线免费观看视频 | 国产黄色一级电影 | 免费看91 | 久久国产精品久久久久久久久久 | 天天拍天天色 | 久久婷婷国产 | 欧美一级久久 | 视频一区二区在线观看 | 国产精品视频在线观看 | 粉嫩一区二区三区性色av | 中文字幕在线看第二 | 久久免费精品视频 | 久久综合一区二区 | 国产一级在线 | av手机在线播放 | 日本偷偷操 | 欧美国产中文 | 久久综合狠狠综合久久综合88 | 久久久久久久一区二区 | 在线看av的网址 | 日韩精品在线免费观看视频 | 国产高清视频一区 | gav成人免费播放视频 | 神马久久久久久久久久 | 毛片.com| 久久亚洲春色中文字幕久久久 | 国产精品高潮呻吟久久av野狼 | 最新国产在线 | 亚洲精品久久久久久一区二区 | 亚洲日本一区二区三区四区 | 欧美一区二区三区在线观看视频 | 狠狠躁夜夜躁人人爽天天高潮 | 成人在线播放网站 | 免费的av网站 | hsck成人网 | 欧美a区 | 日韩国产一区二区三区 |