php,tp5关键词,分词模糊查询并根据查询条件排序

1.大概需求是我这边搜索"维修工",需要先搜索维修工再搜索维修,用一般模糊查询的话会导致维修的词出不来,所有这边需要先进行分词

public function getword($topictitle=''){//维修工$length = mb_strlen($topictitle, 'utf-8');//计算文字长度$titlearray = [];$titlearrays = [];for ($i=0; $i<$length; $i++){$titlearray[] = mb_substr($topictitle, $i, 1, 'utf-8');//分字得到数组【‘维’,‘修’,‘工’】}$key='';foreach ($titlearray as $k=>&$v){//二次循环得到词语【‘维’,‘维修’,‘维修工’】$key.=$v;$titlearrays[]=$key;}// dump($titlearrays);die;return  $titlearrays;}

这里第二次循环是为了简便模糊查询使用,看个人需求可以不使用直接进行词性匹配按照匹配率进行排序,大概意思就是将三个字分开进行查询然后汇总查出三个数组中所有查询到的内容,再进行对出现次数进行筛选匹配排序等,详细写法在主页另一篇分词教学。

  1. 得到的词语我们进行构建查询条件
 $name='维修工';$words=$this->getword($name); //调用上面方法$w['title']=array('or');foreach ($words as $value) {array_unshift(     $w['title'], array('like', '%'.$value.'%'));}

下面是得到的查询语句:

array(4) {[0] =&gt; array(2) {[0] =&gt; string(4) "like"[1] =&gt; string(11) "%维修工%"}[1] =&gt; array(2) {[0] =&gt; string(4) "like"[1] =&gt; string(8) "%维修%"}[2] =&gt; array(2) {[0] =&gt; string(4) "like"[1] =&gt; string(5) "%维%"}[3] =&gt; string(2) "or"
}

3.使用以上方法可以将相关数据查询出来,但是如果不添加排序条件他会根据默认的id进行排序,但是这就会导致带“维”字的数据会排在带“维修工”的前面,所有我们需要用到一个函数LOCATE函数 ,该函数具体含义可自行搜索,下面只写用法

->field('*,LOCATE("'.$name.'",title) as gIndex ')->order('gIndex desc')//将搜索的值进行排序

php,tp5关键词,分词模糊查询并根据查询条件排序相关推荐

  1. elasticsearch 关键词查询-实现like查询

    背景:我们项目需要对es索引里面的一个字段进行关键词(中文+英文+数字混合,中文偏多)搜索,相当于关系型数据库的like操作.要实现这个功能,我们首先想到的方式是用*通配符,但是实际应用场景查询语句会 ...

  2. Python函数封装:利用正则表达式compile、findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容

    Python函数封装:利用正则表达式compile.findall对多组关键词进行模糊查询并返回统计个数,findall截取两个指定符号之间的内容 目录 利用正则表达式compile.findall对 ...

  3. php关键词分词搜索 最多匹配的排在最前面_图解 | 通用搜索引擎背后的技术点...

    来源 | 后端技术指南针头图 | 图虫 写在前面 今天准备和盆友们一起学习下关于通用搜索引擎的一些技术点. 鉴于搜索引擎内容非常多,每一部分都够写好几篇文章的所以本文只是抛砖引玉,深入挖掘还得老铁们亲 ...

  4. Solr 7 - 中文分词、数据导入、查询 基本使用篇

    接着之前的 Solr 7 - CentOS 部署篇 继续 Go! 准备一下 /opt/solr-7.6.0 实际安装目录 /opt/solr 指向实际安装目录的链接 我们先链接一份 solr 命令到 ...

  5. Springboot 整合ElasticSearch 常用的插入查询,模糊查询,范围查询

    前言 本来该篇教程就应该写到 Springboot 整合 ElasticSearch 入门教学必看 https://blog.csdn.net/qq_35387940/article/details/ ...

  6. mysql模糊 精准查询_Mysql 精准查询与模糊查询【原创】

    有一次做项目,没有搞清楚精准查询和模糊查询的区别,写的代码不能用,存在bug,后来特地去学习了这两个查询语句 个人理解:精准查询就是查询条件和符合查询条件的一字不差,比如,我要搜索姓名为ada这个关键 ...

  7. 用PostgreSQL 做实时高效 搜索引擎 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询...

    用PostgreSQL 做实时高效 搜索引擎 - 全文检索.模糊查询.正则查询.相似查询.ADHOC查询 作者 digoal 日期 2017-12-05 标签 PostgreSQL , 搜索引擎 , ...

  8. PostgreSQL 实时高效搜索 - 全文检索、模糊查询、正则查询、相似查询、ADHOC查询...

    标签 PostgreSQL , 搜索引擎 , GIN , ranking , high light , 全文检索 , 模糊查询 , 正则查询 , 相似查询 , ADHOC查询 背景 字符串搜索是非常常 ...

  9. oracle遍历表做查询,oracle 语句之对数据库的表名就行模糊查询,对查询结果进行遍历,依次获取每个表名结果中的每个字段(存储过程)...

    语句的执行环境是plsql的sql窗口, 语句的目的是从整个数据库中的所有表判断 不等于某个字段的记录数 . 代码如下: declare s_sql clob:=''; -- 声明一个变量,该变量用于 ...

最新文章

  1. 怼天怼地怼空气的Linus 喜欢和什么样的人一起工作?
  2. Dropwizard:轻松的RESTful JSON HTTP Web服务
  3. IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT
  4. abap mm后台表_如何查找SAP Fiori UI上某个字段对应的底层数据库表
  5. 基于主机Overlay和自研虚拟化网关的VPC在360的落地
  6. RS-232 vs. TTL Serial Communication(转载)
  7. div的水平居中和垂直居中
  8. python局域网控制电脑关机_黑客操作:用python远程开机and关机
  9. Ps 初学者教程,如何用文字增强您的照片?
  10. c语言累加和校验_累加和校验算法(CheckSum算法)
  11. 设置华为路由器的端口映射
  12. opencv人脸识别(一)调用笔记本摄像头
  13. 【uni-app】模仿微信实现简易发送/取发语音功能
  14. 音视频延时和抖动问题分析和解决
  15. ABP-Hangfire定时任务
  16. Ubuntu 16.04系统安装VS Code流程详解
  17. python 对比两张图片是否相同
  18. 【第十章 线性代数之 特征向量与特征值】3Blue1Brown
  19. phpStudy激活码
  20. 数据库存储过程及存储函数

热门文章

  1. 计算机英语怎么读音读,电脑的英文怎么发音按照标准的
  2. C#连接FTP服务器默认打开根目录
  3. Apollo阿波罗配置中心基本概述
  4. 服务器U盘安装安装centos
  5. 对比学习用于推荐系统问题(SSL,S^3-Rec,SGL,DHCN,SEMI,MMCLR)
  6. LL(1)分析法(C++实现)
  7. 简单高效的图片降噪方法
  8. 多校HDU.5724 Chess
  9. python人工智能之:六边形矩阵热图程序实战篇(一)
  10. 什么是同城商超配送系统