# 探索 zhao-utils:从轻量级文本搜索到全能 Java 工具库
*开源技术栏*
Java 工具包——`zhao-utils`,本文介绍其强大轻量的数据搜索功能。并提供搜索文章案例。
## 目录
[TOC]

# 实战:基于 zhao-utils 的轻量级文本搜索引擎
下面这段代码展示了如何使用 `zhao-utils` 快速构建一个支持分词和容错的本地文本搜索功能。它非常适合用于小型项目中的文章检索或日志搜索场景:
```java
package org.example;
import top.lingyuzhao.utils.JieBaSegmentedWrapper;
import top.lingyuzhao.utils.TextSearch;
import java.io.File;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class Main3 {
public static void main(String[] args) {
// 准备一些数据 模拟我们的一些文章
HashMap<String, String> articles = new HashMap<>();
articles.put("1", "今天天气真不错,非常适合出去散散步。");
articles.put("2", "Java是一门非常经典的面向对象编程语言,至今依然活跃在企业级开发中。");
articles.put("3", "学习数据结构不仅能提升算法能力,还能让你更好地理解底层框架的设计思想。");
articles.put("4", "周末和朋友一起去看了场电影,爆米花很好吃,剧情也很感人。");
articles.put("5", "Spring Boot框架极大地简化了微服务架构的开发流程,提高了团队的交付效率。");
articles.put("6", "好烦啊,不喜欢数据结构这门课。");
// 构建我们的搜索工具
final File savePath = new File("C:\\Users\\codebook\\Downloads\\Test");
final Set<String> stopWords = new HashSet<>();
final TextSearch textSearch = new TextSearch(
stopWords, // 停用词集合
(short) 2, // 每个搜索关键字的最小长度
600000, // 搜索数据加载进内存后,在内存最长的保存时间,这个可用来避免IO
savePath // 搜索索引保存位置
);
// 将需要被纳入搜索范围的文章追加到搜索工具 此步骤在系统中只需要调用一次
// 除非某个文章有了更新,我们期望重新加载它的关键字,我们只需要单独的对那一个文章buildIndex。
// 这里的 buildIndex 就是将文章标识 和 文章内容纳入搜索工具,使用JieBaSegmentedWrapper.SegMode.SEARCH 是词识别规则,一般不用动
articles.forEach((s, s2) -> {
if (textSearch.getIndex(s) == null) {
// 只有在这个文章没有构建过的时候才构建 避免多次构建同一个文章
System.out.println("已构建文章:" + s);
textSearch.buildIndex(s, s2, JieBaSegmentedWrapper.SegMode.SEARCH);
}
});
// 开始搜索 获取到 mark
System.out.println("\n搜索到如下内容");
// 这里就是搜索了,这里的搜索关键字错别字也可以识别成功
for (String mark : textSearch.search("书局结构")) {
System.out.println(articles.get(mark));
}
}
}
```
这段代码的亮点在于:
- **结巴分词集成**:通过 `JieBaSegmentedWrapper` 实现了精准的中文分词。
- **增量索引**:通过判断 `getIndex` 是否为空,实现了智能的增量索引构建,极大提升了性能。
- **内存与IO平衡**:通过设置缓存时间,在内存和磁盘IO之间取得了良好的平衡。
- **容错搜索**:内置的搜索算法能够容忍一定的拼写错误,提升了用户体验。
## 引入 zhao-utils
要使用上述功能,只需在项目的 `pom.xml` 中添加以下依赖:
```xml
<dependency>
<groupId>io.github.beardedmanzhao</groupId>
<artifactId>zhao-utils</artifactId>
<version>1.2.20260429</version>
</dependency>
```
## 远不止于搜索:zhao-utils 全景解析
文本搜索只是 `zhao-utils` 的冰山一角。作为一个综合性的 Java 工具包,它旨在为开发者提供一系列便捷高效的辅助工具,覆盖了从底层数据处理到复杂图像操作的多种应用场景。以下是其核心工具类概览:
| 工具类名 | 作用解释 |
| :--- | :--- |
| `TextSearch` / `JieBaSegmentedWrapper` | 文本搜索与中文分词工具 |
| `PalettePng` / `Palette` | PNG 图像处理,支持通道转换、调色板生成及透明度设置 |
| `IOUtils` / `ASIO` | IO 工具包,处理文件流拷贝、目录递归及公网IP获取 |
| `StrUtils` / `ASStr` | 字符串处理,包含驼峰/蛇形命名转换、换行符转义等 |
| `CacheUtils` | 缓存容器,支持数据在指定时间内的内存缓存 |
| `ASMath` / `ASClass` | 数学计算与类转换工具(源自 AS 机器学习库) |
| `RegularConstant` | 内置常用正则表达式的 Pattern 对象,开箱即用 |
## 总结
`zhao-utils` 的设计理念是“小而全”,它通过静态方法封装,降低了 API 的学习成本。无论是像上文一样快速搭建一个本地搜索引擎,还是处理复杂的图片调色板、字符串转换,它都能提供开箱即用的解决方案。对于希望减少基础代码封装、专注于核心业务的 Java 开发者来说,`zhao-utils` 无疑是一个值得加入工具箱的利器。
------
***操作记录***
作者:[zhao](https://www.lingyuzhao.top//index.html?search=4 "zhao")
操作时间:2026-09-05 17:57:48 星期六 【时区:UTC 8】
事件描述备注:保存/发布
中国 天津市 天津
[](如果不需要此记录可以手动删除,每次保存都会自动的追加记录)