Skip to content

some search common utils, such as segment,canal client and so on

License

Notifications You must be signed in to change notification settings

wxingyl/search-commons

Repository files navigation

模块介绍

commons-lang

基础jar包,没有依赖任何第三方jar包。其实现了公司规定的Result和ErrorCode规范。所以搜索各个项目给其他团队提供的client包都可以基于该jar包。

另外还封装了作为搜索参数和简单返回结果的工具包,比如RangeFilter,Sort等。

##canal-client

基于阿里 Canal mysql数据库binlog的增量订阅&消费组件,封装其基本使用,统一维护canal instance运行,自定义实例,表,行改动的事件处理以及改动的数据过滤, 具体使用参见文档

commons-component

依赖commons-lang,搜索公共组件包,目前只是一些简单的Utils方法,里面依赖了一些第三方jar包:

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>18.0</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.4</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.4</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>        

这4个jar包基本上是每个项目都需要的,所以这儿单独拿出来,并且基于这些第三库封装了一些工具类。

commons-cache

依赖commons-component, canal-client,少量数据内存缓存,该模块封装实现了简单的缓存,支持动态实时修改(需要外部程序支持,比如canal等),同时支持多机器互发通知更新缓存。

封装了notify/receive,多台机器,多系统之间实现消息逐个通知,类似广播的概念。目前搜索内存缓存少量数据使用到,实时索引在masterHost修改,将改动notify到注册的slaveHost机器, 完成数据同步修改。

也可以通过redis缓存,无需实时通知变更,只需要通过canal更新redis缓存内容即可

redis-client

基于jedis封装了redis的访问,方便jedis的使用,另外基于redis实现了commons-lang中的Cache.java, 具体见RedisClient.java

commons-nlp

依赖commons-lang,简单的nlp相关工具类封装,包括:

####Trie相关算法

实现前缀查询树,逆向前缀查询树,最大/最小—正向/反向匹配算法,Aho-Corasick模式匹配树等算法。封装、抽象Trie相关算法,方便自定义扩展

还没有实现双数组Trie树,后续考虑添加

繁体转简体

繁体字转换为简体,目前不需要简体转繁体,所以就算了

汉字转拼音

通过汉字得到拼音,以及拼音首字母等功能接口

分词

分词的一些工具类,词库加载,不同粒度分词等。

目前支持对英语单词,阿拉伯数字,小数,汉字3个粒度分词,如下:

public enum SegmentType {
    //小粒度分词, 根据词库最小匹配
    MIN,
    //大粒度分词, 根据词库最大匹配
    MAX,
    //尽可能多的分词, 根据词典匹配所有结果
    FULL
}

基于该模块实现了ElasticSearch的分词,汉子繁体转简体以及汉子转拼音,具体见项目elasticsearch-analysis-benz

commons-db

封装数据库常用操作,主要使用datasource链接数据库,通过db-utils操作。

更多内容,不断添加~~~~~~

pom依赖

所有的jar没有放到maven中央仓库,所以要使用自己先mvn install, mvn deploy, 之后使用就顺顺当当的了~~~~~~

About

some search common utils, such as segment,canal client and so on

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages