当前位置: 首页 > news >正文

网站开发公司营业范围以春天为主题的网站建设资源

网站开发公司营业范围,以春天为主题的网站建设资源,门户网站建设和检务公开整改,设计师可以做兼职的网站有哪些一 背景 要求es查询的结果按关键字位置排序,位置越靠前优先级越高。 es版本7.14.0,项目是thrift,也可以平替springboot,使用easyes连接es。 二 easyes使用 配easyes按官方文档就差不多了 排序 | Easy-Es 主要的一个问题是easy…

一 背景

要求es查询的结果按关键字位置排序,位置越靠前优先级越高。

es版本7.14.0,项目是thrift,也可以平替springboot,使用easyes连接es。

二 easyes使用

配easyes按官方文档就差不多了

排序 | Easy-Es

主要的一个问题是easyes有与mybatis相同的一套mapper,如果项目也用了mybatis,那需要将mybatis、easyes的mapper分成两个目录

见:避坑指南 | Easy-Es

还有实体类的主键,按ee官方推荐是留个没注解的id自动生成id,而不是指定自己生成的主键,因为会影响数据储存的分区,导致查询效率降低

具体查询:(config、mapper、实体类略)


// 查询构造LambdaEsQueryWrapper<EsSearchDocument> listWrapper = new LambdaEsQueryWrapper<>();
// 查询条件(相等)listWrapper.eq(EsSearchDocument::getType, searchType);
// 查询条件(模糊),与上条是and关系listWrapper.like(EsSearchDocument::getTitle, searchContent);
// 分页偏移量计算int offset = ((pageNum != null ? Integer.parseInt(pageNum) : 1) - 1) * size;
//查询总条数Long count = esMapper.selectCount(listWrapper);
// 设置分页listWrapper.limit(offset, size); // 分页
// 查询结果列表List<EsSearchDocument> esList = esMapper.selectList(listWrapper);//打印System.out.println("count="+count);System.out.println(JSON.toJSONString(esList));

三 自定义排序

es官方排序是按重复次数、内容长度、权重之类,用一个啥公式算出来分数排的

大学也许还能看懂点,现在是完全不懂了

easyes也提供了按字段排序之类(见上面官方文档链接)

回到问题,es、ee都没有按关键字位置排序的。不过es、ee还提供了自定义脚本 painless,可以自己写处理方式。那就好说了,在脚本里获得字段原文,indexof拿到关键字所在位置,根据这个值排序。

大部分网上的文档这么写(包括文心一言):

可以看到取原文的写法是 doc['字段.keyword'].value

经过实测会报错:

1 字段.keyword 不存在。去掉.keyword能取到,但取得是内容片段,比如原文“金坷垃好处都有啥”,这个word/words值是“都有啥”。

2  text类型字段不能拆出来排序,否则报错:

Text fields are not optimised for operations that require per-document field data like aggregations 

意思就是text类型字段被es禁用了聚合、排序操作,要么加注解(fielddata=true)才能解锁,要么改成keyword类型。但加注解会影响效率,有多影响待观察。

这个字段是用了ik分词器的,去掉分词器后(谨慎改变实体类,每次改变都会试es数据清空),word值成了“啥”

到这里已经一整天过去了

然后翻阅es的官方文档,终于发现这么一句:

Field context | Painless Scripting Language [7.14] | Elastic

意思是 doc['字段']写法不适用于text类型字段。想取到原值可以 params['_source']['字段']

试了下还真可以。

param是可以传动态参数的,使脚本避免反复编译提高效率。另外doc、_source、ctx是结合上下文在不同场景用的,比如doc是_search查询用的,但这个问题的查询就用了_source,不能太死板

探究 | Elasticsearch Painless 脚本 ctx、doc、_source 的区别是什么?-腾讯云开发者社区-腾讯云

最后加了这么一段

// 定义脚本String painlessScriptStr = " String word = params['_source']['title'];" + " int position = (word != null && !''.equals(word)) ? word.indexOf(params['searchContent']) : -1; " + " return position; ";// 自定义评分规则Script script = new Script(ScriptType.INLINE, "painless", painlessScriptStr, Collections.singletonMap("searchContent", searchContent));ScriptSortBuilder ssb = new ScriptSortBuilder(script, ScriptSortBuilder.ScriptSortType.NUMBER).order(SortOrder.ASC);listWrapper.sort(ssb);

http://www.yayakq.cn/news/808542/

相关文章:

  • 爱站网 关键词挖掘工具站什么网站可以做外单
  • 哪个网站做h5最好企业网站运维
  • 井陉建设局网站公示网站建设开发费用怎样入账
  • 中小企业建立网站最经济的方式dw网页制作表格
  • 长春网站建设推广外网专线
  • 哪里建设企业网站佛山外发加工网
  • 有什么专业做蛋糕的网站吗自贡市住房和城乡建设局网站
  • 中国建设银行网站太慢了中国建设工程协会网站电话
  • 南阳做个网站多少钱智能网站建设公司排名
  • 杭州seo整站优化wordpress评分
  • 中企动力建设网站怎么样佛山网站建设专家评价
  • 鄂伦春网站建设徐州自助建站模板
  • 北京高端网站制作公司商城网站建设怎么样
  • 北京网站建设找华网天下哪个网站做app
  • 网站建设起到计划和指导作用网红营销活动
  • 提供网站建设设计外包猪八戒网做动漫弹幕网站
  • 苏州网站建设 网络推广公司做网站 不是计算机专业
  • 网站 建设运行情况报告dedecms做网站
  • 手机网站建设注意事项宜昌网站seo
  • 发布消息做任务的网站做行业分析的网站
  • 百度网盟推广官方网站wordpress采集文章内容
  • 课程网站开发背景和意义有创意的文创产品
  • 邢台哪儿专业做网站分销平台是什么意思
  • 网站设置在设备之间共享怎么开启网站开发课程介绍
  • 蛋品 东莞网站建设网站开发框架系统
  • 义乌建设网站制作海北高端网站建设价格
  • 江苏网站建设效果营销网站建设解决方案
  • 乐享校园网站建设策划书wordpress 获取category id
  • 小白网站建设wordpress崩了
  • 菏泽专业网站开发公司虚拟机怎么做多个网站