package org.wltea.analyzer.dic; import java.io.IOException; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpHead; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; public class Monitor implements Runnable { private static CloseableHttpClient httpclient = HttpClients.createDefault(); /* * 上次更改时间 */ private String last_modified; /* * 资源属性 */ private String eTags; /* * 请求地址 */ private String location; public Monitor(String location) { this.location = location; this.last_modified = null; this.eTags = null; } /** * 监控流程: * ①向词库服务器发送Head请求 * ②从响应中获取Last-Modify、ETags字段值,判断是否变化 * ③如果未变化,休眠1min,返回第①步 * ④如果有变化,重新加载词典 * ⑤休眠1min,返回第①步 */ public void run() { //超时设置 RequestConfig rc = RequestConfig.custom().setConnectionRequestTimeout(10*1000) .setConnectTimeout(10*1000).setSocketTimeout(15*1000).build(); HttpHead head = new HttpHead(location); head.setConfig(rc); //设置请求头 if (last_modified != null) { head.setHeader("If-Modified-Since", last_modified); } if (eTags != null) { head.setHeader("If-None-Match", eTags); } CloseableHttpResponse response = null; try { response = httpclient.execute(head); //返回200 才做操作 if(response.getStatusLine().getStatusCode()==200){ if (!response.getLastHeader("Last-Modified").getValue().equalsIgnoreCase(last_modified) ||!response.getLastHeader("ETag").getValue().equalsIgnoreCase(eTags)) { // 远程词库有更新,需要重新加载词典,并修改last_modified,eTags Dictionary.getSingleton().reLoadMainDict(); last_modified = response.getLastHeader("Last-Modified")==null?null:response.getLastHeader("Last-Modified").getValue(); eTags = response.getLastHeader("ETag")==null?null:response.getLastHeader("ETag").getValue(); } }else if (response.getStatusLine().getStatusCode()==304) { //没有修改,不做操作 //noop }else{ Dictionary.logger.info("remote_ext_dict {} return bad code {}" , location , response.getStatusLine().getStatusCode() ); } } catch (Exception e) { Dictionary.logger.error("remote_ext_dict {} error!",e , location); }finally{ try { if (response != null) { response.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
相关推荐
在本文中,我们将探讨如何利用Elasticsearch的IK分词器并对其进行源码改造,以实现热词库的动态更新,特别是通过MySQL数据库进行热词和停用词的定时更新。首先,我们要了解IK分词器的几种常用词库配置方式。 **0. ...
IK分词插件支持在线热更新词库,无需重启Elasticsearch服务。此外,通过设置停用词表,可以排除常见无意义词汇,提高搜索效率。 总之,Elasticsearch IK分词插件6.1.2版是处理中文文本的强大工具,它提供了灵活的...
IK分词常用停止词库约1500个 elasticsearch analysis ik分词器常用停止词库
在Elasticsearch中使用IK分词器,首先需要将"elasticsearch-analysis-ik-7.6.2.jar"文件放到Elasticsearch的plugins目录下。然后,通过Elasticsearch的命令行工具或配置文件启用插件。配置通常涉及以下步骤: 1. ...
IK分词器是针对Elasticsearch(ES)的一款热门中文分词插件,其全称为“Intelligent Chinese Analyzer for Elasticsearch”。它由Java编写,旨在为中文文档提供高效、准确的分词处理。版本7.10.2是IK分词器的一个...
Elasticsearch-analysis-ik 是一个专为 Elasticsearch 设计的中文分词插件,它基于 Lucene 的 IK 分词器,旨在提供高效、准确的中文分词能力。 **IK 分词器介绍** IK (Intelligent Chinese Analyzer) 是一个针对...
在中文处理方面,IK (Intelligent Chinese) 分词器是 Elasticsearch 的一个非常重要的插件,尤其对于中文文本的索引和搜索性能提升起到了关键作用。IK 分词器针对中文的特性进行了优化,能够有效地对中文文本进行...
**Elasticsearch IK 7.4.2 分词器** 在大数据时代,全文检索和搜索引擎技术扮演着至关重要的角色,而Elasticsearch作为一...通过不断学习和实践,你可以充分利用Elasticsearch和IK分词器来挖掘和分析海量的中文数据。
本篇将深入探讨如何基于IK Analyzer实现动态词库分词,并且在整个过程中无需重启服务,极大地提高了系统的灵活性和效率。 首先,我们需要了解什么是IK Analyzer。它是一个开源的、适用于Java平台的全文检索分析引擎...
elasticsearch-analysis-ik 是一个常用的中文分词器,在 Elasticsearch 中广泛应用于中文文本的分析和搜索。下面是 elasticsearch-analysis-ik 分词器的几个主要特点: 中文分词:elasticsearch-analysis-ik 是基于...
- **智能分析**:ik分词器采用动态词库加载机制,能根据上下文环境进行词语切分,提高分词准确性。 - **高性能**:ik分词器采用多线程并行处理,提高了分词效率,降低了系统负载。 - **扩展性**:ik分词器支持扩展...
**Elasticsearch 分析插件 IK 7.4.0** Elasticsearch 是一个流行的开源全文搜索引擎,广泛应用于大数据分析和全文检索场景。IK 分词器(IK Analyzer)是 Elasticsearch 中常用的中文分词组件,旨在提供高效、灵活的...
通过修改IK分词器源码,实现了从MySQL数据库中自动加载新词库的功能,支持Elasticsearch集群的热更新,无需重启节点即可实时加载新词。 ## 项目的主要特性和功能 1. 热更新功能支持从MySQL数据库中自动加载新词库...
**Elasticsearch 7.17.4 版本中的中文 IK 分词器** Elasticsearch 是一个流行的、开源的全文搜索引擎,它基于 Lucene 库,并提供了分布式、实时、可扩展的搜索和分析功能。在处理中文文本时,一个合适的分词器是至...
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
使用 IK 分词插件后,Elasticsearch 可以更好地处理中文文本,例如在索引创建时,可以指定使用 IK 分词器进行字段分析,这样在搜索时,Elasticsearch 将按照分词结果进行匹配,提供更加精准的搜索结果。同时,IK ...
IK分词器(Intelligent Chinese Analyzer for Elasticsearch)是为Elasticsearch设计的一款强大、灵活且高效的中文分词插件。它支持自定义扩展词典、同义词扩展、动态词典加载等功能,能更好地适应中文的复杂语境。 ...
安装IK插件时,这个JAR文件会被加载到Elasticsearch的类路径中,使得Elasticsearch能够识别并使用IK分词器。 **依赖库** - **httpclient-4.4.1.jar**:Apache HttpClient库,用于网络通信,Elasticsearch在与其他...
IK分词器是ES中常用的中文分词插件,通过集成IK分词器并对其进行源码修改,可以实现从远程数据库MySql5.7.2动态更新同义词词库,并实现实时同步。 ### Elasticsearch集成IK分词器 集成IK分词器是通过在Elastic...