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

Elasticsearch 默認配置 IK 及 Java AnalyzeRequestBuilder 使用

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

本文提綱

一、什么是 Elasticsearch-analysis-ik

二、默認配置 IK

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

四、小結(jié)

前言

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

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

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

這里可以看出,5.3.x 不在第二行范圍內(nèi)。因此這里我講下,如何在 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 官網(wǎng)中可以看到,其中版本需要對應(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,下載成功后進行安裝。

解壓 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" 

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

然后重啟 ES 即可。驗證 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 容器安裝時,需要對應(yīng)的端口開發(fā)。

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

ES 中默認配置 IK 后,通過 Rest HTTP 的方式我們可以進行得到分詞結(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)建一個方法,入?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 分析請求類型中進行分詞并獲取分詞結(jié)果 AnalyzeResponse.AnalyzeToken 列表。

四、小結(jié)

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

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

【本文為51CTO專欄作者“李強強”的原創(chuàng)稿件,轉(zhuǎn)載請通過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-07-03 15:55:05

語法jpa狀態(tài)

2023-11-10 08:17:01

分布式搜索引擎

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應(yīng)用

2022-12-30 09:12:55

查詢es搜索值

2021-06-09 09:36:18

DjangoElasticSearLinux

2024-08-01 10:10:24

MySQL場景搜索

2024-02-29 08:02:00

2021-05-11 09:02:34

OpenSearch存儲Elastcsearc

2010-10-29 09:36:18

ORACLE用戶

2015-12-02 10:52:11

PHPUnitWindows配置
點贊
收藏

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

主站蜘蛛池模板: www.狠狠干| 久久久精品视频免费看 | 久久亚洲一区二区三区四区 | 免费午夜电影 | 麻豆久久久 | 99成人在线视频 | 麻豆av一区二区三区久久 | 欧美性区| 亚洲五码久久 | www.久久| 国产精品一区二区三区免费观看 | 国产免费观看久久黄av片涩av | 91九色视频 | jizz中国日本| 午夜电影日韩 | 欧美成人h版在线观看 | 在线欧美视频 | 久久这里只有精品首页 | 国产xxxx在线 | 久久久久国产精品一区 | 久久国内精品 | 国产成人99久久亚洲综合精品 | 午夜在线| 国产一区黄色 | 久久久国产一区二区三区 | 精品中文在线 | 久草网址 | 日本亚洲一区二区 | 亚洲国产一区二区三区 | 免费在线黄| 国产成人免费视频网站视频社区 | 亚洲精品粉嫩美女一区 | 欧美性jizz18性欧美 | 国产精品免费视频一区 | 国产成人a亚洲精品 | 97偷拍视频| 日本免费小视频 | 91精品国产91久久久久久最新 | 婷婷二区 | 国产一区二区精华 | 搞黄网站在线观看 |