Elasticsearch(四)优化用户体验
改正用户拼写
Term suggester:词项匹配建议;可以通过wiki的插件来下载wiki上面的单词以及短语,来作为你的拼写提示基础仓库;
Phrase suggester:n-gram算法,短语匹配;
Complete suggester:prefix匹配;内置了FST(Finite State Tranduter)数据结构,实现快速检索,自动完成后续字符填充;但是这个在实现层面上,对于输入那些内容需要预先指定好,这个工作量可就有点大了,然后指定output,就是这些指定的内容输入后,将会返回这个指定值,感觉不是很智能。
改善查询流程
这个比较干货的内容,这个环节也会整理出来很多小白问题,也是使用ES的基本功。
首先是一个普通的query,想要查询澳大利亚的一个系统:

这里_all代表所有的字段,所有的字段来匹配australian system,比如title,text只要匹配就行;这样明显不是我们需要的,我们需要更加精准的控制。
下面进行优化,就是采用多字段匹配;同时指定多字段匹配的权重:

下一步优化是对于短语匹配的优化:

结果如下:
Australian Antarctic Building System
Australian rating system
Australian Series System
…
匹配方面我们做的差不多了,下一步是排序以及过滤问题,我们希望第二个,第三个这种的,能够排在第一个前面;看到这里,想到了通过设定距离来实现,

通过指定了slop来限定了词项间的距离为1,这样查询结果如下:
Australian Honours System
Australian honours system
Wikipedia:Articles for deletion/Australian university system
Australian rating system
…
这里科普一下,must代表必须满足,should代表里面的查询从句只需要自定的数量即可,默认是1个,可以通过mini_should_match参数来指定;不过最终must和should子句的关系是"AND"就是must要满足,同时should中指定从句数量要满足;是"AND"关系。
然后是过滤一下文档,包括从定向页面(wiki的重定向页面并不是最终页面,所以可以忽略)以及特殊页面(通常都是已经删除的页面)
在query同级别,添加一个filter即可,过滤器查询还快,因为没有评分:

最后,我们为match_phrase增加boost,提升他的评分:
替换:

为


这样title满足短语匹配的文档将会获得高分,作为高分显示出来。
当然,还可以继续优化,比如增加错误拼写文字的建议之类。
回过头来,我们再来梳理一下优化的全过程,首先我们针对一个普通全字段查询:
- 优化为多匹配并指定权重查询,让title的词项匹配满足的拥有高权重;
- 增加了短语匹配,令满足短语的title和text匹配的至少一个;
- 然后增加了距离敏感处理,让短语之间间隔单词为1的数据留下;
- 对于数据进行一下清洗(这一步其实可以提前做),对于redirect和特殊的文档进行过滤;
- 最后,对于短语匹配通过增加boost来为其进行提高分数,提分这种的,是优化的最后一步,对于查询各个环境尽心梳理,哪些条件是可以提高其权重的(第一条是提高词项匹配的权重,这个则是对短语匹配的提高权重);
总结
数据清洗,过滤掉不要的数据(通常最先来做,避免后续查询还要为无效文档计算评分);
词项优化,指定字段的优先级;
短语优化,指定短语匹配,设置距离以及短语权重(boost);
Elasticsearch(四)优化用户体验的更多相关文章
- jQuery Pjax – 页面无刷新加载,优化用户体验
pjax 是 HTML5 pushState 以及 Ajax 两项技术的简称,综合这两个技术可以实现在不刷新页面的情况下载入 HTML 到当前网页,带给你超快速的浏览器体验,而且有固定链接.标题以及后 ...
- 性能优化 && 用户体验
性能优化 下拉菜单那种最好是点击时候请求,或者是查询时候请求 分页加载 用户体验 有加载.进度条.友好提示
- target标签对于优化用户体验的作用
最近开始关注target="_blank"标签,是源于对咨询区的采纳工作.帖子内容页是在原页面加载,这样问题就来了,每采纳完一个问题,必须得后退好几次才可以,很不方便.后来按ctr ...
- web开发性能优化---用户体验篇
怎样从技术角度怎样增强用户体验.都是非常多平台都在做的事情,依据个人实际经验碰到几种体验做下总结. 1.降低页面刷新白屏 适当使用ajax技术.改善刷新白屏现象. 2.信息提醒,邮件.站内信.短信在购 ...
- 提升网站用户体验—WebP 图片的高效使用
一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设备快速分享高分辨率的图片.网站与手机等移动设备能快速展示各种富媒体. ...
- 用户体验 | 寻找成套的 App SDK 服务
前言 对于开发者来说,三方 SDK 这个词已经是一个不需要任何解释的词语了,然而我想面对琳琅满目的 SDK 产品,大家都会纠结如何选择.那么选择一个 SDK 需要注意哪些问题呢? SDK 的 稳定易用 ...
- Vue.Js的用户体验优化
一次基于Vue.Js的用户体验优化 一.写在前面 半年以前,第一次在项目上实践VueJs,由于在那之前,没有Angular,avalon等框架的实践经验,所以在Vue的使用上,没有给自己总结出更多 ...
- CDN高级技术专家周哲:深度剖析短视频分发过程中的用户体验优化技术点
深圳云栖大会已经圆满落幕,在3月29日飞天技术汇-弹性计算.网络和CDN专场中,阿里云CDN高级技术专家周哲为我们带来了<海量短视频极速分发>的主题分享,带领我们从视频内容采集.上传.存储 ...
- [ionic开源项目教程] - 第10讲 新闻详情页的用户体验优化
目录 [ionic开源项目教程] 第1讲 前言,技术储备,环境搭建,常用命令 [ionic开源项目教程] 第2讲 新建项目,架构页面,配置app.js和controllers.js [ionic开源项 ...
随机推荐
- TensorFlow随机值:tf.random_normal函数
tf.random_normal 函数 random_normal( shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=No ...
- 如何实时查看Linux下日志
以下以Tomcat为例子,其他WEB服务器目录自己灵活修改即可: 1.先切换到:cd usr/local/tomcat5/logs2.tail -f catalina.out3.这样运行时就可以实时查 ...
- kbmMW安全第#3 - 基于硬件的随机数#2
在之前的基于硬件的随机数博文中,我介绍了如何使用基于外部硬件的随机数生成器,来生成高质量的随机数. 但是,后来英特尔和AMD的CPU也包含随机值生成器.从2015年6月开始,来自Ivy Bridge的 ...
- Eclipse_设置_01_自动提示
- Centos7 zip unzip 安装和使用
安装: yum install -y unzip zip: 解压 unzip filename.zip
- Maven项目的结构分析
上图为简单的Maven结构,其中用src/main/resources写项目配置文件,src/main/java写项目的java文件,src/test/java写java测试类文件.
- 添加aimate动画
.page3_ship{ background:url(../image/boat_02.png) 0 center no-repeat; background-size: 486px 385px; ...
- ZOJ4067 Books(贪心)
题目链接:传送门 题目大意: DG在书店买书,从左到右第i本书价格为ai.DG从左走到右,能买就买.如果已知DG买了m本书,问他原本最多有多少钱.若无上限,输出“Richman”,若不可能买这么多书, ...
- FZU软工第四次作业-团队介绍
目录 团队展示----旅法师 团队成员 队名----旅法师 拟作的团队项目描述 队员风采 团队首次合照 团队的特色描述 团队展示----旅法师 本次作业链接 团队成员 031602305 陈玮 031 ...
- PTA——念数字
PTA 7-30 念数字 #include<stdio.h> #include<stdlib.h> #define N 50 int main() { ] = {"l ...