小程序es高亮搜索

tp6实现es 简单搜索 |PHP操作elastic| | |-在 elasticsearch-php 中,几乎一切操作都是用关联数组来配置。REST 路径(endpoint)、文档和可选参数都是用关联数组来配置。 为了索引一个文档,我们要指定4部分信息:index,type,id 和一个 body。构建一个键值对的关联数组就可以完成上面的内容。body 的键值对格式与文档的数据保持一致性。(译者注:如 [“testField” ⇒ “abc”] 在文档中则为 {“testField” : “abc”} 在 composer.j 阅读详情

小程序es搜索高亮显示

小程序列表搜索框

 <form catchsubmit="formSubmit" catchreset="formReset">
      <input class="weui-input" name="title" placeholder="这是一个输入框" />
        <button style="margin: 30rpx 0" type="primary" formType="submit">Submit</button>
    </form>

小程序前台页面循环展示的时候需要注意的是我们进行高亮的那个字段需要运用富文本标签进行解析样式
示例代码如下:

 <block wx:for="{{str}}" wx:key='key'>
    <view>
      <rich-text nodes="{{item.title}}"></rich-text>
      <text>{{item.content}}</text>
    </view>
  </block>

小程序页面js

 //高亮搜索
  formSubmit(e) {
    var _this = this;
    //console.log(e.detail.value.title)
    var title = e.detail.value.title;
    wx.request({
      url: 'http://day531.week2.com/serch',
      data:{
        title:title
      },
      success:function(add){
        console.log(add.data.data)
        var str = add.data.data;
        _this.setData({str})
      }
    })
  },

后天创建索引,然后指定ik分词器的配置

  public function suoyin2()
    {
        $client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
        $params = [
            'index' => 'qxw',
            'body' => [
                      'settings'=>[
                          'number_of_shards'=>5, //分片数量(后期不可更改)
                          'number_of_replicas'=>1 //副本数量(后期可更改)
                      ],
                        'mappings'=>[
//                          'table'=>[
//                              'enabled'=>true //php版本7.0之后表名默认为‘_doc’,表名可以不加
//                        ],
                    //加载ik分词器的字段
                    'properties' => [
                        'title' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_max_word'
                        ],
                        'content' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_max_word'
                        ],
                    ]
                ],
            ]
        ];
        $response = $client->indices()->create($params);
    }

当mysql数据表添加成功后之后将添加的数据同步到es中

  public function save(Request $request)
    {
        //接收数据
        $param=$request->param();
        if ($param == ''){
            return json(['code'=>500,'data'=>'','msg'=>'酒店信息必填']);
        }
            //添加
            $obj=new \app\week1\model\Jiudian();
            $res=$obj->allowField(true)->save($param);
            //当数据表添加成功后,然后我们调用我们封装的方法,往es面添加数据,进行一个数据的同步
            $add=\app\week1\model\Jiudian::order('id','desc')->limit(1)->find()->toArray();
            //print_r($add);die();
            $es=new MyElasticsearch();
            $es->add_doc($add['id'],$add,'wxq','_doc');
            if ($res){
                return json(['code'=>200,'data'=>$res,'msg'=>'添加成功']);
            }else{
                return json(['code'=>500,'data'=>'','msg'=>'添加失败']);
            }
    }

然后后台接收数据进行es搜索

 public function index(Request $request)
    {
        //接收数据
        //接收搜索的标题
        $title=$request->param('title');
            if ($title == ''){
                $data=\app\week1\model\Jiudian::order('price','desc')->select();
                foreach ($data as &$v){
                    $v['image']="http://day524.week1.com/".$v['image'];
                }
                //print_r($v['image']);die();
                return json(['code'=>'0','data'=>$data,'msg'=>'查询成功']);
            }else{
                //从es中查询
                $client = ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build();
                $params = [
                    'index' => 'wxq',
                    'body' => [
                        'query' => [
                            'multi_match' => [
                                'query' => $title,
                                //查询字段
                                'fields' => ['title']
                            ]
                        ],
                        //高亮显示
                        'highlight' => [
                            "pre_tags" => ["<em class='yx_hl' style='color: red'>",],
                            "post_tags" => [ "</em>"],
                            'fields' => [
                                '*' => new Highlighter()
                            ]
                        ]
                    ]
                ];
                $response = $client->search($params);
                //halt($response);
                //这里需要将我们搜索出来满足条件的数据进行foreach循环,然后将数据进行替换赋值
                foreach ($response['hits']['hits'] as $k=>$v){
                    $response['hits']['hits'][$k]['_source']['title']=$response['hits']['hits'][$k]['highlight']['title'][0];
                }
                //降维
                $data = array_column($response['hits']['hits'], '_source');
                return json(['code' => 0, 'msg' => '查询成功', 'data' => $data]);
            }
    }
Elasticsearch 与快手云集成:短视频内容的实时搜索 通过本文的实战,我们搭建了一套端到端的短视频实时搜索系统用快手云的托管ES服务,解决了集群部署、维护的问题;通过WebHook实现了短视频数据的实时同步(发布即搜索);开发了高相关性的搜索接口(支持模糊匹配、过滤、排序);优化了搜索体验(高亮、同义词、缓存);集成了快手小程序前端,实现了完整的用户流程。 阅读详情

相关推荐

【Elasticsearch】高亮搜索:从原理到Web呈现

高亮搜索是一种在搜索结果中突出显示与查询关键词匹配部分的技术。在Elasticsearch中,它通过分析查询语句中的关键词,在搜索到的文档中找到这些关键词的位置,然后以特定的方式(如添加HTML标签)来标记这些位置,以便在显示结果时能够突出显示。 分析查询:当我们发起一个包含高亮要求的搜索查询时,Elasticsearch首先会解析查询语句。它会确定查询中的关键词、查询类型(如模糊查询、精确查询等)以及其他相关的查询条件。 搜索文档:然后,Elasticsearch会根据查询条件在索引的文档中进行搜索。它会

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 8898

微信小程序表单使用

微信小程序表单使用 话不多说,直接上代码。 1.wxml文件 <view class="container"> <!-- 表单 --> <form class="form" catchsubmit="formSubmit"> <view class="topic">注册</view> <!-- 姓名 --> <view class="uname form_view"> 用户名: &lt

web 1199

微信小程序格式化以及高亮组件wxml-vscode-master.zip

微信小程序格式化以及高亮组件wxml-vscode-master.zip

微信小程序组件和插件

微信小程序组件和插件

weixin_45591582的博客 2881

未隔离电源设备使用usb转串口调试导致串口模块爆炸烧坏事故记录

这个事就发生在前两天,我们公司的wifi模块被客户用到了咖啡机上,客户寄了一台整机给我们协助调试,还送了几包咖啡豆,本想着还能打个咖啡喝一喝的,但就在咖啡机刚寄过来第一天,就出事了。而这个事故的发生,竟然仅仅是因为同事接了个串口模块到电脑调试打印导致的。谁也想不到,这个3.3V的供电的wifi模块居然还有这么大的威力。直接将usb转TTL串口模块的转换芯片给爆开了,咖啡机也给弄坏了,据同事描述当时情况就只见到一片火光和一声巨响,状况比较惨烈,所幸的是笔记本电脑没有烧坏,但是直接给崩蓝屏了。 ...

fangye945a的博客 6189

逆向选择启示录:一个失败高频策略如何意外跑赢市场

本文探讨了高频交易中的逆向选择现象,揭示了一个失败的高频策略如何通过简化意外跑赢市场。通过加密货币市场的实证分析和蒙特卡洛模拟,研究发现低预测性的简单策略反而更具鲁棒性,有效规避了逆向选择风险。文章还提供了小币种做市策略的优化框架和实践建议,为量化交易者提供了宝贵洞见。

weixin_29191669的博客 401

微信小程序form表单中button按钮、input框样式修改

<form catchsubmit="formSubmit" catchreset="formReset"> <view class="weui-cell__bd" style="margin: 30rpx 0"> <text class="label">学生姓名</text> <input class="weui-input" name="学生姓名" placeholder="请输入" pla..

HuLuWa1997的博客 2791

图像去畸变(相机成像、畸变模型)

首先通过上一步相机标定得到畸变参数和相机内参,同时,由于图像去畸变都是在归一化相机坐标系下进行的,而图像都是像素坐标,所以需要先通过相机内参矩阵将图片上的像素点从像素坐标系转变到归一化坐标系,再通过畸变参数在归一化坐标上进行去畸变的操作。由于畸变是发生在世界点通过透镜投影到相机坐标系这个过程中的,所以去畸变操作是在相机坐标系下进行的。(如图,Pd即为畸变后成像点)3.读取图像和各个参数,调用去畸变函数(opencv自带的cv.undistort函数),就可以完成对图像的去畸变处理,进而得到去畸变的图像。

lm5688jjupm1n28的博客 1050

微信小程序云开发一路走来所遇到的坑——开发总结

2020年不平凡的一年,终究要干不平凡的事情。 在四月份初,和几位小伙伴一起开始了开发小程序的道路,时至五月初完成了小程序1.0.0版本。 这一路走来,真的是遇到很多坑,当然也学了不少知识。在开发的道路上,难免会遇到各种各样的问题。只有靠着顽强的毅力去一点一点解决它。其中在开发小程序的核心代码时,每天脑子都是快速运转。因为开发小程序不只是一个写代码的过程,这也是一个你去思考别人的想法的过程。 在这...

专注前端技术,包括Web端、移动端、小程序、APP 2646

飞书云文档API操作详细介绍

开通云文档API、python程序调用飞书api、飞书获取app_id和app_secret、

Brother_ning的博客 1万+

XILINX RFSoC全面解析(五)—— Zynq UItrascale+ RF Data Converter IP核详解

这期我们来看看RFSoC独有的IP核——Zynq UItrascale+ RF Data Converter如何使用。 我使用的VIVADO版本是2018.3,这个是最低版本,要开发RFSoC,VIVADO版本必须不低于2018.3。 另外电脑配置也需要很高,64位,8核@3.4GHz CPU,16GB内存,固态硬盘基本就是低配,跑起来很勉强。建议有条件的朋友使用工作站或者服务器。 首先在VIVADO中新建一个工程,因为我使用的是xilinx官方的开发板,所以可以直接设定选board就行。 在I

1万+

微信小程序表单提交时数据双向绑定

【代码】微信小程序表单提交时数据双向绑定。

文龙刚的博客 1719

⚡【C++要笑着学】(13) STL介绍:什么是STL标准模板库 | STL的版本 | 浅谈STL的缺陷

再讲解函数模板之前先对STL做一个小铺垫,本篇将对STL做一个简单的介绍。

有道无术, 术尚可求。有术无道, 止于术。 3033

微信小程序配置laravel框架进行ES搜索并高亮展示

使用命令行开启ES功能 elasticsearch -d 进行 Composer 命令安装操作 composer require elasticsearch/elasticsearch 进行use一下 use Elasticsearch\ClientBuilder; 可以在config中封装一个es.php的文件 <?php return [ 'host'=>['127.0.0.1:9200'] ]; ES索引的创建(可以略过,添加的时候会自动创建) //链接e

Xian_Hu的博客 1872

【ComfyUI】Flux + ControlNet 边缘搭配深度、瓷砖、姿态引导图生图

本文介绍了一个基于 Wan 2.1 的 ComfyUI 文生视频工作流,通过 UNet、CLIP 和 VAE 三个核心模型,将文本提示转化为动态视频。工作流包含模型加载、提示词解析、潜空间采样等7个环节,支持分辨率、帧数等参数设置,最终输出高质量视频文件。该方案适用于创意设计、教育培训和多媒体制作等场景,能快速生成符合语义的动态内容。文章还提供了相关开发资源和学习链接,适合AI视频生成领域的研究者和实践者参考。

Mr数据杨 1632

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

小程序文章搜索

有小伙伴说了,我们mysql可以分库分表,还可以做集群,还可以主从复制,但是这里有个很严重的问题,多个数据库,当要获取一定范围的·1数据时,需要去多个数据库截取数据,再汇总,这无疑麻烦而且增加了多余的开销。小程序也好,app也好,客户端还是什么乱七八糟也好,都会或多或少用到elastic search,作为一个使用海量数据的搜索引擎,吊打mysql。,不管是建立索引也刚好,建立字段也好,都是通过es语句建立,类似于sql语句,至于es的安装和使用,我就不赘述了,只是说说该场景下es的使用。

2301_82147294的博客 461

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Elasticsearch搜索+下拉触底加载更多

Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎。它不仅包括了全文搜索功能,还可以进行以下工作:1、分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。2、实时分析的分布式搜索引擎。3、可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 首先,启动Elasticsearch在Laravel框架中安装扩展包 创建索引高亮搜索 小程序 .jssearch(e){ var that=this; //防抖 clearT

m0_62229785的博客 411

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

laravel8使用es完成微信小程序高亮搜索

wxml: <l-search-bar placeholder="搜索" custom bind:linblur="search"> <view name="icon"/> </l-search-bar> <!-- <rich-text nodes="{{item.title}}"></rich-text> --> <l-card type="primary" wx:for="{{se...

qq_58954197的博客 862

thinkphp6+es搜索

//创建索引,添加数据 $client = ClientBuilder::create()->setHosts(config('app.es'))->build(); $data = Users::select()->toArray(); foreach ($data as $k=>$v){ $params = [ 'index'=>'add',//类似库名 'type'=&g..

lh25946的博客 1836

es 搜索数据

创建索引 /** * 创建索引 */ public function index() { $client=ClientBuilder::create()->setHosts(['127.0.0.1:9200'])->build(); $parms=[ 'index'=>'q', //索引名 'body'=>[ 'settings'=>[

zcbzcb52的博客 219

项目(小程序)中数组方法的使用

日复一日,反反复复,终于完成了小程序的项目.。这篇文章我就对自己的项目中用到的array方法结合具体的功能进行综合的分析 搜索区高亮的显示 使用方法Str.replace()+正则+Array.map() 正当项目即将完成之际,恰逢项目经路来了一句,搜索框我觉得高亮显示会更好一些,把这个需求弄一下.恰同学少面年,跟项目经理争执了半天也没有个结果.最后我不要你觉得,我要我觉得,惨败收场.此时心里面不知道多少个???what?.没办法,硬着头皮也得来呀.简单分析后,其实原理并不难 原理:字符串替换 基本想法就是

qq_46159864的博客 1312

小程序-输入关键字搜索,关键字在搜索列表中高亮效果

这里写自定义目录标题小程序-输入关键字搜索,关键字在搜索列表中高亮效果 小程序-输入关键字搜索,关键字在搜索列表中高亮效果 第一步:按照网上大神写的思路,在截取首位关键字空格方法 出现找不到replace问题 在线跪求那位遇到这种bug的大神给予解答 ...

会飞的咸鱼 453

小程序中搜索文字高亮显示

小程序对解析标签字符串不友好,有时候要处理一些搜索内容、关键字、段落中高亮展示检索到的匹配文字就会比较麻烦。 [HTML] <view class="section"> <view class="view-search"> <input class="view-search-input" value="{{keyName}}" p...

weixin_34205076的博客 1381

微信小程序 搜索出来的关键字高亮显示

效果图展示 未高亮显示效果图 高亮显示后效果图 .wxml 文件 <text wx:for="{{item.blog_title}}" wx:key="{{index}}" class="{{item == new_sousuo_info ? 'searchHigh' : '' }}">{{item}}</text> .wxss 文件 .searchHig...

小胖_@的博客 4859

微信小程序 实时搜索并高亮关键字

微信小程序实现实时搜索并高亮关键字的功能效果 一、效果图 二、实现流程: 1.在文本框中输入关键字key,如“比赛”,检索出比赛相关的列表 key = 比赛 2.处理结果列表:在key的前后加分隔符,如“%%” 3.通过第2步的分隔符进行切割,获取新的数组:str.split("%%") 4.页面for循环上面的新数组:与key相等,则高亮显示,否则常规样式显示 三、代码实现 1.index.js 部分代码: 2.index.wxml 部分代码: 注意:下面的函数 比较关键 //返回一个使用key切割s

12程序猿的博客 3130
上一篇: es基本操作
下一篇: 支付宝沙箱支付
stringQiang
博客等级 码龄5年 36粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值