首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于Elasticsearch搜索!我既要分词,又要模糊查询!

前言:

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

前台搜索:

1.  即搜索示例

2. 业务代码

3. 效果演示

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230520A078WB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券