首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏pythonista的日常

    es搜索优化&mysql查询优化

    这周优化了我们沙抖官网搜索的功能,这个搜索目前是根据视频标题进行匹配,之前是对用户输入的关键词进行了分词查找,比如用户输入【机器人】,这样的话,只要视频标题中有关键词的任意一个字都会被搜到,比如含有【人 】字的标题会展示出来,并可能排的很靠前,所以我就对当前的搜索进行了优化,现在搜索是优先进行相邻短语查询 match_phrase,如果相邻短语查询结果小于2个就进行普通的分词查询,这个相邻短语查询是要求在请求字符串中的所有查询项必须都在文档中存在 "fields": { "video_title": { } } } } 这周内我还对我们的数据表查询进行了优化 加了普通索引和联合索引,现在我们一个视频数据表的数据量是几百兆大小,根据视频行业进行查询时,mysql 响应速度在 600ms 左右,我对行业字段添加了普通索引,查询响应在 30 ms 左右,前后对比优化结果还是很明显的

    2.1K20发布于 2020-06-16
  • 来自专栏性能优化最佳实践

    【腾讯云ES】基于NGram分词ES搜索性能优化实践

    背景在商品搜索场景中,需要根据用户输入关键字严格匹配商品数据,而普通的全文检索方式,诸如:match 或者match_pharse,不一定能达到搜索效果。 例如:使用 match api 时,基于 ik_max_word 分词方式对“白色死神”进行分词后,搜索"白色"、"死神"能搜索到,而根据 "白" 进行搜索时,结果确为空。 关于严格匹配我们很容易就能想到模糊查询,es本身也是能支持模糊查询的:方案选择方案一:模糊查询 wildcard && fuzzy 模糊查询的功能有点类似 mysql 中的 like,可以使用正则表达式的通配符来达到模糊搜索的效果 ,但是当输入字符串很长或者搜索数据集很大时,搜索性能很低,原因是ES使用的是基于DFA的文本匹配算法,时间复杂度(M+N),当索引里面的数据量为K时,时间复杂度为(M+N)× K,数据量越大,输入文本越长 ,模糊搜索的效率就会越低。

    4K40编辑于 2022-12-05
  • 来自专栏云前端

    ES6中的尾调用优化

    原文:http://exploringjs.com/es6/ch_tail-calls.html ECMAScript 6 提供了尾调用优化(tail call optimization)功能,以使得对某些函数的调用不会造成调用栈 什么是尾调用优化? Step 6. 行C接收到返回值3并完成打印工作。 因此,严格模式(strict mode)禁止这些属性,并且尾调用优化只在严格模式下有效。 3.1 尾递归循环 尾调用优化使得在递归循环中不增长调用栈成为可能。下面举两个例子。

    1.3K20发布于 2020-06-16
  • 来自专栏张家辉的树屋

    react es6+ 代码优化之路-1

    这里集合了一些代码优化的小技巧 在初步接触 es6+ 和 react 的时候总结的一些让代码跟加简化和可读性更高的写法 大部分知识点是自己在平时项目中还不知道总结的,一致的很多优化的点没有写出来,逐步增加中 react es6+ 代码优化之路-1 1、函数式默认参数 使用函数默认的参数, 使用 es6+ 的时候,有了结构赋值,我们就不用再函数中自己再去定义一个变量。 (foo) } //我们传一个对象进去 es5Fun() // 'default foo' es5Fun('not default foo') // 'not default foo' /* 当我们使用 es6+ 的时候 **/ const es6Fun = (config = {'defalut'})=>{ console.log(config) } es6Fun(); // ' defalut' es6Fun('not defalut') // 'not defalut' 复制代码 1.1 简洁的数组解构 //bad const splitLocale = locale.split

    42520发布于 2021-02-02
  • 来自专栏ES搜索

    ES三周年】ES查询—海量数据搜索深度分页优化

    图片 背景 最近在实际项目中查询条件上越来越复杂,mysql的筛选已无法支撑,准备将所有搜索筛选改为es查询。 图片 图片 图片 具体使用方法: 第一次查询时,会生成一个 scrollId ,并将所有符合搜索条件的搜索结果缓存起来。 Scroll查询只搜索到了所有的符合条件的 doc_id (官方推荐用 doc_id 进行排序,因为本身缓存的就是 doc_id ,如果用其他字段排序会增加查询量),并将它们排序后保存在search context 创建一个时间点 Point In Time(PIT)保障搜索过程中保留特定事件点的索引状态。有了 PIT,search_after 的后续查询都是基于 PIT 视图进行,能有效保障数据的一致性。 引用文章:Elasticsearch Scroll API vs Search After with PIT 相比scroll,内存也得到了优化es 的查询简化流程: 第一步.用户发送查询dsl

    5.1K229编辑于 2023-04-29
  • 来自专栏cwl_Java

    快速学习ES6新特性-函数优化

    1.4、函数优化ES6中,对函数的操作做了优化,使得我们在操作函数时更加的便捷。 1.4.1、函数参数默认值 在ES6以前,我们无法给一个函数参数设置默认值,只能采用变通写法: 现在可以这么写: 1.4.2、箭头函数 ES6中定义函数的简写方式: 一个参数时:

    35420发布于 2020-02-14
  • 来自专栏达达前端

    ES6基础-ES6 class

    作者 | Jeskson 来源 | 达达前端小酒馆 ES - Class 类和面向对象: 面向对象,即万物皆对象,面向对象是我们做开发一种的方式,开发思维,面向对象的思维中万物皆对象,以人作为例子 那么什么是类与对象,讲解ES6中类的特性,类的继承,Babel,基于流程控制的形变类实现。 function() { } 函数声明: function a() { } getter与setter getter,setter 类似于给属性提供钩子 在获取属性值和设置属性值的时候做一些额外的事情 ES5 (this instanceof Car)) { throw Error('new'); } } new Car(); 使用ES5模拟类 // 构造函数 class Car { constructor params) { params = header; header = null; // undefined } } post('http:...' , { a:1, b:2 }); ES5中的继承

    1K20发布于 2019-12-03
  • 来自专栏Golang开发

    ES6ES2015

    name}`) } sayHello("xiaoming") Arrow Function箭头函数 通过箭头简化代码 let list = [10,20,30]; //es5 let newList = list.map(function (value,index) { return value*value }) //es6 } } let s = new Student("xiaoming",20) s.gender = "M" console.log(s.gender) Promise es5

    1.1K10发布于 2019-06-15
  • 来自专栏全栈程序员必看

    es6es5_es6es5插件

    npm init -y 首先安装babel组件 npm install @babel/cli @babel/core @babel/preset-env babel-plugin-transform-es2015 配置babel,.babelrc(babel配置文件) { "presets": [ "@babel/preset-env" ], "plugins": ["transform-es2015 babel命令 "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "babel": "babel es6 .js -o es5.js" }, 配置完成之后,执行命令即可 npm run babel 效果 根目录下的es6.js export class A { a = 0 constructor setA(v) { this.a = v } } const a = new A() a.setA(10) console.log(a); 执行npm run babel后,根目录生成es5

    92020编辑于 2022-11-09
  • 来自专栏全栈程序员必看

    es6es5_es5 es6是什么

    情景问题 项目有很多新的 js 语法 es6 es7 等等 如你所愿市面上很多浏览器已经大部分支持这些与语法了 但是 ie 就差强人意了 直接歇菜 如何解决 利用 node 插件完成语法降级 实施情景 在一些 ES2015+ 语法不支持的环境下,每个需要用到 Polyfill 的引用时,会自动加上 }, ] ] } # 命令行转码 npm install --save-dev @babel/cli 复制到源项目下 \cp -r lib/js/business /root/my-project/src/main/resources/static/js packson.json { "name": "es6 -es5", "version": "1.0.0", "description": "es6 transform es5", "main": "index.js", "scripts": { "test

    91020编辑于 2022-11-08
  • 来自专栏达达前端

    ES6基础-ES6的扩展

    console.log('1'); } if(str.includes('PD')) { console.log('2'); } } for-of遍历字符串 let str = 'abc'; // es6

    76420发布于 2019-11-26
  • 来自专栏全栈程序员必看

    ES6ES5_es5与es6的区别

    es6转码es5 一.Babel 在线转码 二.谷歌的Traceur 在线转码 三.es6console 在线转码并运行 四.Traceur 在页面中引入使用 //加载 Traceur 文件 <script 五. node中使用Traceur 1.首先需要用安装 npm install -g traceur 2.运行es6文件 traceur 文件名.js 3.将es6转为es5 traceur --script 文件名.es6.js --out 文件名.es5.js 4.防止出现问题最好加上实验选项 --experimental traceur --script 文件名.es6.js --out 文件名.es5 .js --experimental 六. node中使用Babel 1.安装 npm install --global babel 2.运行es6文件 babel-node 文件名.js 3.将es6 转为es5 babel 文件名.js 或者指定转换后的es5文件名 babel es6文件名.js -o es5文件名.js 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

    1.2K20编辑于 2022-11-08
  • 来自专栏全栈程序员必看

    es6es5_es6转换es5

    为什么要es6es5? 答:es6代码在老版本的浏览器中无法执行。 怎么将es6代码转为es5代码,让其在老版本的浏览器中执行? 答:使用babel模块,babel是一个使用非常广泛的es6转换器,这就意味着我们可以将es6代码转为es5代码,从而在老版本的浏览器中执行。 使用步骤: 新建一个新的用来编写es6代码的文件夹,进入到该文件中,初始化一个项目 npm init 表示一步步通过配置来初始化一个项目 npm init -y 表示使用默认设置来快速初始化一个项目 out-file b.js –out-file 或 -o 参数指定输出文件 babel src --out-dir dist –out-dir 或 -d 参数指定输出目录 实例: //转化之前为es6 Iterator、Generator、Set、Map、Proxy、Reflect、Symbol、Promise等全局对象,以及定义在全局对象上的方法(比如Object.assign)都不会转码 举例来说,ES6

    1.3K10编辑于 2022-11-08
  • 来自专栏洁癖是一只狗

    ES搜索相似度

    今天再来一道面试真题,es搜索的相似度算法如何计算 首先,我们要从这几方面回答 TF(term frequency)检索词频率 IDF(inversed document frequency)反向文档频率 中出现的次数,比如上面出现了3次,一个term在所有doc 中出现的次数越多,分数就越低,比如我们的and 或the常用词,就会频繁出现,对分数的贡献就很少,所以分数就比较小 字段长度准则 hello搜索的 ---->[2,5] 每一个doc都会计算出term计算出一个分数,hello 一个分数,world一个分数,都会计算出一个分数组,所有的分数组形成一个文档向量 查询向量 比如hello world,es

    1.5K10编辑于 2022-06-24
  • 来自专栏第二蒙古上单

    ES搜索内容置顶

    有些时候,我们可能需要人工干预ES搜索结果,让指定的内容置顶,ES提供了pinned语法来实现该功能。 "minimum_should_match" : 1 } } } }, "size" : 10, "from" : 0 } 看文档说似乎是从ES

    2.5K30发布于 2021-05-18
  • 来自专栏Smile博客

    es6

    ---- ---- ---- ----

    40010编辑于 2023-05-04
  • 来自专栏eadela

    ES6

    ES的全称是ECMAScript,它是由ECMA国际标准化组织制定的一项脚本语言的标准化规范。 let let关键字就是用来声明变量的 使用let关键字声明的变量具有块级作用域 ? ? ? ? ?

    57710发布于 2019-09-29
  • 来自专栏全栈开发工程师

    ES6+】001-ES6概述、ES 6 新特性:let 关键字

    IE 开始支持 第 4 版 2007 年 过于激进,未发布 第 5 版 2009 年 引入严格模式、JSON,扩展对象、数组、原型、字符串、日期方法 第 6 版 2015 年 模块化、面向对象语法、Promise 版 2017 年 Async/await、字符串扩展 第 9 版 2018 年 对象解构赋值、正则扩展 第 10 版 2019 年 扩展对象、数组方法 第 11 版 2020年 链式操作、动态导入等 ES.next 2020+ 动态指向下一个版本 注:从 ES6 开始,每年发布一个版本,版本号比年份最后一位大 1; 5、谁在维护 ECMA-262 TC39(Technical Committee 39)是推进 TC39 定期召开会议,会议由会员公司的代表与特邀专家出席; 6、为什么要学习 ES6 ES6 的版本变动内容最多,具有里程碑意义; ES6 加入许多新的语法特性,编程实现更简单、高效; ES6 是前端发展趋势,就业必备技能; 7、ES6 兼容性 二、ECMASript 6 新特性 1、let 关键字 特性: let 关键字用来声明变量,使用 let 声明的变量有几个特点: 不允许重复声明

    48000编辑于 2025-01-06
  • 来自专栏郭少华

    ES6

    ES6的开发环境搭建 现在的Chrome浏览器已经支持ES6了,但是有些低版本的浏览器还是不支持ES6的语法,这就需要我们把ES6的语法自动的转变成ES5的语法。 这节课我们就使用Babel把ES6编译成ES5 新建目录 建工程目录之后创建两个文件夹:src和dist src:书写ES6代码的文件夹,写的js程序都放在这里。 } gsh(0,1,2,3,4,5,6,7) 字符串模板 字符串模板使用 字符串拼接 //ES5语法 let a="姓名" let c="我的"+a+"LM"; console.log(c); //ES6 中的箭头函数和扩展 ES5写法 function add(a,b){ return a+b; } console.log(add(2,3)); ES6写法 var add=(a,b)=>a+b; ' } console.log(obj[xm]); //ES6 Symbol对象元素的保护作用 没有进行保护的写法: var obj={name:'ES6',sex:'男',age:'18'} for(

    3.2K31发布于 2018-09-11
  • 来自专栏ymktchic

    ES6

    ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。 ES6没有规定,function关键字与函数名之间的星号,写在哪个位置。这导致下面的写法都能通过。 它由社区最早提出和实现,ES6将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。 为了解决这个问题,ES6提供了Map数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。 ES6提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。 基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

    72610编辑于 2022-01-18
领券