前言

ElasticSearch是一个一个分布式的实时文档存储,每一个字段都可以被索引与搜索,并且能支持PB级别的结构化或者非结构化数据。早期我们应用的全局搜索是简单的SQL模糊查询,为了分担数据库压力所以用了ES,选择他的原因除了以上几点外,还有其提供的API方式简单,于任何对接的编程语言都适用。以下将以PHP的业务场景完善搜索功能。

环境

ThinkPHP5.1

ElasticSearch7.8

PHP7.3

功能迭代简介

最开始的ES取代方法解决了搜索速度问题,后来新增的ik分词器,解决了搜索词条单一问题。单也正是中文分词原因,对每句话都是拆解成指定粒度的词。当遇到单词时,一般只会对一句话里的单词进行拆解,而搜索时需要输入某个字母,希望输出的是带字母后面的词条,也就是模糊查询。经过翻阅文档,发现了即时搜索。

即时搜索或输入即搜索(search-as-you-type),就是当用户习惯在输完查询内容之前,就能为他们展现搜索结果,不仅能在更短的时间内得到搜索结果,也能引导用户搜索索引中真实存在的结果。例如,输入 dvd r ,即时搜索会得到:dvd r9s 和 dvd r9sk等 , 以下将通过完整示例演示效果。

配置索引的映射

关于ElasticSearch环境搭建和基本操作在前面文章有说明,这里就假装已经创建了索引,以下是索引的映射。还有文档的添加也是根据你自己的需求定义了,不管是定时任务还是业务节点触发,亦或是采集工具同步等。

{"mappings": {"_doc": {"properties": {"class_id": {"type": "long"},"goods_name": {"type": "text","analyzer": "ik_smart"},"goods_sort": {"type": "keyword"},"id": {"type": "keyword"},"price": {"type": "long"},"single_goods_name": {"type": "text","analyzer": "ik_max_word"},"state": {"type": "keyword"},"v": {"type": "long"}}}}
}

前台搜索

1.  即搜索示例

{"match_phrase_prefix" : {"brand" : {"query": "walker johnnie bl", "slop":  10}}
}

2. 业务代码

public function queryData($key, $sort, $from = 0, $size = 10)
{$from = $from * $size;$indexName = Env::get('elasticsearch.goods_index') ?? 'products';$params = ['index' => $indexName,'client' => ['timeout' => 10,        'connect_timeout' => 10],'body' => ['from' => $from,'size' => $size,'query' => ['bool' => ['should' => [['multi_match' => ['query' => $key,'fields' => ['goods_name^2','single_goods_name'],],],['wildcard' => ['single_goods_name' => "$key*"]],['fuzzy' => ['single_goods_name' => ['value' => $key]]],['match_phrase_prefix' => ['single_goods_name' => "$key"]],],],],'sort' => [['_score' => "desc"],['goods_sort' => 'desc']],]];return $this->es->search($params);
}

3. 效果演示

ElasticSearch中文分词和模糊查询相关推荐

  1. 本地elasticsearch中文分词器 ik分词器安装及使用

    ElasticSearch 内置了分词器,如标准分词器.简单分词器.空白词器等.但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词. ik分词器就是一个标准的中文分词器.它可以根据 ...

  2. php elasticsearch ik,elasticsearch 中文分词(elasticsearch-analysis-ik)安装

    elasticsearch 中文分词(elasticsearch-analysis-ik)安装 在elasticsearch的plugins目录下,创建ik目录 cd /usr/local/elast ...

  3. Java分词工具模糊查询_Java如何使用elasticsearch进行模糊查询

    这篇文章主要介绍了java如何使用elasticsearch进行模糊查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 使用环境上篇文章本人已书写过 ...

  4. ElasticSearch中文分词,看这一篇就够了

    写在前面:我是「且听风吟」,目前是某上市游戏公司的大数据开发工程师,热爱大数据开源技术,喜欢分享自己的所学所悟,现阶段正在从头梳理大数据体系的知识,以后将会把时间重点放在Spark和Flink上面. ...

  5. ElasticSearch 中文分词器ik的安装、测试、使用、自定义词库、热更新词库

    文章目录 # 实验环境 # ik分词器的下载.安装.测试 ## 安装方法一:使用elasticsearch-plugin 安装 ## 安装方法二:下载编译好的包进行安装 1.下载 2.安装 3.重启` ...

  6. ElasticSearch中文分词器-IK分词器的使用

    IK分词器的使用 首先我们通过Postman发送GET请求查询分词效果 GET http://localhost:9200/_analyze {"text":"农业银行& ...

  7. elasticsearch java likequery_ElasticSearch的模糊查询

    我是ElasticSearch的新手,我正在探索它的功能 . 我感兴趣的其中一个是模糊查询,我正在测试并且有麻烦使用 . 这可能是一个虚假的问题,所以我猜一个已经使用过这个功能的人会很快找到答案,至少 ...

  8. elasticsearch中文分词器ik-analyzer安装

    前面我们介绍了Centos安装elasticsearch 6.4.2 教程,elasticsearch内置的分词器对中文不友好,只会一个字一个字的分,无法形成词语,别急,已经有大拿把中文分词器做好了, ...

  9. 怎么配置linux中es搜索的主机名,分布式搜索elasticsearch中文分词集成

    elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介 ...

最新文章

  1. php提交表单关闭弹出层,使用js实现关闭js弹出层的窗口
  2. POJ1364基本的查分约束问题
  3. GMIS 2017大会杨强演讲:迁移学习的挑战和六大突破点
  4. power linux 安装系统,powershell 安装服务器
  5. win10 安装 Pytorch
  6. 异步广度优先搜索算法
  7. 精仿B站源码+自动采集360视频
  8. linux修改非root用户密码永不过期
  9. Redis进阶高可用之主从复制
  10. mybatis 传参是 liststring 的注意事项
  11. 2016/7/7 设置wamp2.5 mysql密码 重点是mysql版本
  12. Hadoop安装实验报告
  13. 扫描工具扫描法查看网内IP使用情况
  14. 树莓派usb免驱摄像头报错
  15. 16 台服务器达成 1000 万 tpmC,挑战分布式数据库性能极限
  16. RISC_V芯片架构
  17. 【软件测试】你最常用的web测试-浏览器兼容性测试
  18. 移动端web开发之坑---input内文字与同行文字不对齐问题
  19. 如何在 WordPress 中启用WebP 图片?webp有什么优势?
  20. CocosCreator downlevelIteration 允许迭代器进行迭代

热门文章

  1. android 后台播放,实现后台播放  |  Android 开发者  |  Android Developers
  2. linux查看gogs版本,linux下 gogs的安装和web钩子
  3. Win10版《芒果TV》获评2016年度Windows Store最佳官方/休闲娱乐应用(LiveSino和微软信仰中心联合评选)...
  4. 求助大神们 请问sublime行数左边的黄色竖杠表示什么
  5. 芯片MAX3421E (MAXIM)
  6. 【软件测试】一线大厂的测试开发基本技能,我不再想庸庸碌碌......
  7. 开放式耳机漏音有多大?开放式耳机和封闭式耳机哪个音质好?
  8. 基SpringBoot的智能社区警务管理平台
  9. java字符串abcde_关于字符串的实验(abc和abcde的起始地址是否一样?)
  10. 第二章 《凯斯迈之岛》