querybuilder 排序_elasticsearch的匹配与排序问题
后台搜索使用的java api
public List searchQueryTeam(String term, int limit, int offset, int isHighlight, long seed) throws Exception {
final List list = new ArrayList();
SearchRequestBuilder srbTeam = client.prepareSearch(INDEX_NAME)
.setTypes("Team")
.setSearchType(SearchType.DEFAULT);
if (StringUtils.isNotEmpty(term)) {
BoolQueryBuilder qbTeam = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("rowState", 0))
.mustNot(QueryBuilders.termQuery("status", 1));
qbTeam.must(QueryBuilders
.boolQuery()
.should(QueryBuilders.wildcardQuery("name", "*" + term + "*").boost(10f))
.should(QueryBuilders.fuzzyLikeThisQuery("name", "description", "tag").analyzer("ik")
.likeText(term)).boost(0.1f));
srbTeam.setQuery(qbTeam);
}
……
当term是10时,在head里复制了上面程序生成的语句
{
"from" : 0,
"size" : 10,
"query" : {
"bool" : {
"must" : [ {
"term" : {
"rowState" : 0
}
}, {
"bool" : {
"should" : [ {
"wildcard" : {
"name" : {
"wildcard" : "*10*",
"boost" : 10.0
}
}
}, {
"flt" : {
"fields" : [ "name", "tag","description" ],
"like_text" : "10",
"analyzer" : "ik"
}
} ],
"boost" : 0.1
}
} ],
"must_not" : {
"term" : {
"status" : 1
}
}
}
}
}
查询的结果
hits: {
total: 2
max_score: 0.9193326
hits: [
{
_index: tmwk
_type: Team
_id: 309
_score: 0.9193326
_source: {
createDate: 2014-12-11 15:41:25
rowState: 0
id: 309
name: 产品研发团队
description: 产品研发团队是公司的重中之重,所有产品的源头来源于需求
status: 0
tag: 19, 17, 狗, 18, 15, 四六级, 我的
projectCount: 0
userCount: 0
role: null
lastModifiedDate: 2014-12-24 16:26:38
}
}
{
_index: tmwk
_type: Team
_id: 270
_score: 0.90041924
_source: {
createDate: 2014-11-21 17:00:09
rowState: 0
id: 270
name: 10101010
description: sddd四六级额哦如萨拉杜甫,算法链接偶萨拉非。三等奖哦额乳酸代理费见,斯蒂芬就咯额ulsdjfsd。
status: 0
tag: 牛逼, 埃菲尔, 英国, 乒乓, 自行车, 天鹅
projectCount: 0
userCount: 0
role: null
lastModifiedDate: 2014-11-21 17:00:09
}
}
]
}
建索引前,先设置了mapping,对name字段不做分词,其他的字段analyzer都设置为ik,不明白查询关键词是10时,为何会匹配到tag: 19, 17, 狗, 18, 15, 四六级, 我的 这条,而且排名第一,程序里设置的boost也完全没生效,请问如何能做到准确匹配跟使模糊查询结果排到后面
querybuilder 排序_elasticsearch的匹配与排序问题相关推荐
- querybuilder 排序_Elasticsearch高级搜索排序( 中文+拼音+首字母+简繁转换+特殊符号过滤)...
一.先摆需求: 1.中文搜索.英文搜索.中英混搜 如:"南京东路","cafe 南京东路店" 2.全拼搜索.首字母搜索.中文+全拼.中文+首字母混搜 如 ...
- 开发小技巧之:unicode的排序和正则匹配
文章目录 简介 ASCII字符的排序 本地字符的排序 为什么不使用unicode进行排序 emoji的正则匹配 总结 简介 我们知道计算机最先兴起是在国外,出于当时计算机性能的考虑和外国常用字符的考虑 ...
- c语言排序常用问题,【更新中】【排序详解】解决排序问题(以C语言为例)
[更新中][排序详解]解决排序问题(以C语言为例) [更新中][排序详解]解决排序问题(以C语言为例) 文章目录 排序的相关概念 简单排序 一.插入排序: (一)插入排序基本思想 (二)插入排序基本操 ...
- es查询java代码如何排序_elasticsearch 查询聚合结果排序
一.查询结果按某个字段进行排序 { "size" : 5, "query" : { "bool" : { "filter" ...
- java comparable排序_Java使用Comparable解决排序问题
本文实例讲述了Java使用Comparable解决排序问题的方法.分享给大家供大家参考.具体实现方法如下: 一次举重竞赛的比赛规则是:选手的成绩以成功举起的总重量来排序,举起总重量多的排在前面:当举起 ...
- es修改排序_ElasticSearch 评分排序
背景 通过脚本改变评分 背景 近期有一个需求,需要对优惠券可用商品列表加个排序,只针对面值类的券不包括折扣券. 需求是这样的,假设有一张面值券 50 块钱,可用商品列表 A 100.B 40.C 10 ...
- linux磁盘文件排序 hdfs文件大小排序 sed正则匹配
linux下文件大小排序 hdfs文件系统中的文件大小排序 文章目录 前言 一.本地磁盘文件排序 二.hdfs文件排序 总结 前言 在工作和学习中,我们经常需要做一些简单的运维工作,其中最为典型的就是 ...
- sql多字段求和降序排序_elasticsearch基础笔记11-搜索排序
1.默认排序 ES是按照查询和文档的相关度进行排序的,默认是降序排列,也就是说,我们之前的查询, 可以认为是下面这样子的,. 当然,我们也可以换一个字段来进行排序,那么,就不用评分了. 全文搜索也类似 ...
- 字典排序什么意思_字典排序问题
2018-01-03@望京 排序,立即想到用Python的内置函数sorted() Python 2.x 中 sorted(...) sorted(iterable, cmp=None, key=No ...
最新文章
- 世界一流大学真的建成了?26所“985”高校自评报告出炉
- sqlserver yml配置文件
- Nginx server之Nginx作为反向代理服务器
- matlab图片白边_Matlab论文插图消除白边的5种方法
- golang 的 tag
- 冒着得罪大佬的风险,曝光下这件事
- 自动特征工程在推荐系统中的研究
- 海康威视球机摄像头晚上补光灯闪烁问题
- I LOVE YOU TOO密码解析
- GIS应用技巧之定义图框样式
- Linux安装wget
- Log4j2 漏洞检测工具清单
- uniapp H5 调用高德地图导航
- mysql 拼音查询_MySQL拼音首字母查询
- 中国六大最忙和六大最懒城市
- myaql数据库如何建表
- 本地搭建私有云盘:虚拟机安装群晖NAS 1/5
- 一文教你看懂Fama-French三因子模型
- 视网膜电图特征可以检测成人的抑郁状态和治疗反应:一种机器学习方法
- 爬虫爬数据时,post数据乱码解决办法
热门文章
- 我们需要什么样的开源教育?
- Dapr Meetup 3.22【周六】
- “开源、共享、创新” 2020 中国.NET开发者大会小结
- 打造钉钉事件分发平台之钉钉审批等事件处理
- .NET Core开发实战(第16课:选项数据热更新:让服务感知配置的变化)--学习笔记...
- 在ASP.NET Core中编写合格的中间件
- .NET Core跨平台部署于Docker(Centos)- 视频教程
- 开源基于Canal的开源增量数据订阅消费中间件
- asp.net core sdk runtime 镜像[已更新至2.2.0]
- TensorflowSharp 简单使用与KNN识别MNIST流程