Elasticsearch的suggest联想提示查询实现
Elasticsearch的suggest联想提示查询实现
思路
- 先将关键字在completions 自动补全索引库中查询,获取建议的补全信息
- 如没有获取到补全信息,可能表示用户输入的关键词有拼写错误,在articles索引库中进行纠错建议查询
实现
在toutiao-backend/toutiao/resources/search.py中实现自动补全视图
class SuggestionResource(Resource):"""联想建议"""def get(self):"""获取联想建议"""qs_parser = RequestParser()qs_parser.add_argument('q', type=inputs.regex(r'^.{1,50}$'), required=True, location='args')args = qs_parser.parse_args()q = args.q# 先尝试自动补全建议查询query = {'from': 0,'size': 10,'_source': False,'suggest': {'word-completion': {'prefix': q,'completion': {'field': 'suggest'}}}}ret = current_app.es.search(index='completions', body=query)options = ret['suggest']['word-completion'][0]['options']# 如果没得到查询结果,进行纠错建议查询if not options:query = {'from': 0,'size': 10,'_source': False,'suggest': {'text': q,'word-phrase': {'phrase': {'field': '_all','size': 1}}}}ret = current_app.es.search(index='articles', doc_type='article', body=query)options = ret['suggest']['word-phrase'][0]['options']results = []for option in options:if option['text'] not in results:results.append(option['text'])return {'options': results}
Elasticsearch的suggest联想提示查询实现相关推荐
- springboot集成elasticsearch,实现搜索提示补全功能
springboot集成elasticsearch,通过实体类创建索引,实现搜索提示补全功能 文章目录 springboot集成elasticsearch,通过实体类创建索引,实现搜索提示补全功能 一 ...
- java实现sug,Elasticsearch搜索Suggest功能优化
搜索Suggest需要优化问题: 怎么优化Suggest词库,提升Suggest词准确率 怎么提高响应速度 suggest词库获取 冷启动可以从内容中提取热词数据来解决,或者人工设置 挖掘搜索日志: ...
- Solr Suggest智能提示配置说明
有时候,为了实现如下功能 以满足用户在输入个别单词的时候,能够自动联想提示,这样可以避免用户的冗余输入并提供一定的推荐,从而实现更好的交互效果和内容推广效果.这样的功能有很多实现方式,成熟的Solr其 ...
- elasticsearch根据某个字段来查询,以及通过时间筛选
elasticsearch根据某个字段来查询,以及通过时间筛选 String startTime = "2021-06-01"; String endTime = "20 ...
- 【Elasticsearch】Elasticsearch的IndexSorting:一种查询性能优化利器
1.概述 转载:Elasticsearch的IndexSorting:一种查询性能优化利器 前言 前两周写过一篇<基于Lucene查询原理分析Elasticsearch的性能>,在最后留了 ...
- java查询oracle数据库_Oracle数据库之java 从Oracle数据库到处数据到Elasticsearch全文检索库进行全文查询...
本文主要向大家介绍了Oracle数据库之java 从Oracle数据库到处数据到Elasticsearch全文检索库进行全文查询,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. ...
- 查询客户时,提示“查询已超出200行,请限制查询“
查询客户时,提示"查询已超出200行,请限制查询" 在EBS中,我们查询客户时如果输入的参数较少,系统会提示"查询已超出200行,请限制查询".如下图: 更新配 ...
- ElasticSearch 6.3版本(ES)查询人名关键字不拆词查询
ElasticSearch 6.3版本(ES)查询关键字不拆词查询:类似mysql 的 like 语句. mysql的sql语法类似如下,采用大量like和locate语法,进行模糊查询,导致查询一个 ...
- 使用ElasticSearch完成百万级数据查询附近的人功能
上一篇文章介绍了ElasticSearch使用Repository和ElasticSearchTemplate完成构建复杂查询条件,简单介绍了ElasticSearch使用地理位置的功能. 这一篇我们 ...
最新文章
- 32如何向Linux转,linux使用技巧32则
- 在LinearLayout中嵌套RelativeLayout来设置Button的位置(xml文件)
- UE4.18预览第一版发布,共享XR引擎层降低硬件支持难度
- 信息学奥赛一本通(1158:求1+2+3+...)
- Head First 设计模式 —— 策略设计模式
- jdk15不安装jre_弄懂 JRE、JDK、JVM 之间的区别与联系,你知道多少?
- 认清自我,不在迷茫!2019个人年终总结!
- 机器学习笔试面试整理
- 谷歌浏览器任何页面都打不开连设置也不能打开
- 谈谈用户体验与风控的平衡性
- 不同类型的轴承受力简介
- [转载]国内物联网平台初探(三):QQ物联智能硬件开放平台
- 2021秋季《数据结构》_EOJ 1091.六度空间
- android 开源_8个开源Android教育应用
- Jmeter压测运行原理,这些你知道么?
- 《安富莱嵌入式周报》第308期:开源带软硬件安全认证的PLC设计,开源功率计,可靠PID实现,PR2机器人设计文件全开源,智能手表设计WASP-OS
- ZYNQ7010教程(一)PL部分
- Linux Signal信号表
- 范围管理-输入、输出、工具和技术
- 混凝土外加剂建筑化学品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告