ElasticSearch 中文分词和模糊查询
前言
ElasticSearch 是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持 PB 级别的结构化或者非结构化数据。早期我们应用的全局搜索是简单的 SQL 模糊查询,为了分担数据库压力所以用了 ES,选择他的原因除了以上几点外,还有其提供的 API 方式简单,于任何对接的编程语言都适用。以下将以 PHP 的业务场景完善搜索功能。
环境
ThinkPHP5.1
ElasticSearch7.8
PHP7.3
功能迭代简介
最开始的 ES 取代方法解决了搜索速度问题,后来新增的 ik 分词器,解决了搜索词条单一问题。单也正是中文分词原因,对每句话都是拆解成指定粒度的词。当遇到单词时,一般只会对一句话里的单词进行拆解,而搜索时需要输入某个字母,希望输出的是带字母后面的词条,也就是模糊查询。经过翻阅文档,发现了即时搜索。
复制代码
配置索引的映射:关于 ElasticSearch 环境搭建和基本操作在前面文章有说明,这里就假装已经创建了索引,以下是索引的映射。还有文档的添加也是根据你自己的需求定义了,不管是定时任务还是业务节点触发,亦或是采集工具同步等。
复制代码
前台搜索
即搜索示例
复制代码
2. 业务代码
复制代码
评论