浏览 41
已结题

关于#es#的问题,如何解决?(keyword类型,自定义权重排序)

elasticsearch 权重排序

现在有两个字段:名字和机构,因项目需要,使用的是keyword类型。
name,organizationName

现在设计需要,要按照** 检索词 **匹配度进行排序。

姓名匹配字数/姓名总字数 x 80% + 机构匹配字数/机构总字数 x 20%

比如: 搜索词是 “张三”,
姓名:“张三的名字” (匹配到两个字,就是2,总字数5)
机构:“张三上海张三机构”,(匹配到四个字,就是4,总字数8)
则:2/5x0.8 + 4/8x0.2 这个结果就是这条的分数。

我想使用script painless实现,但是现在问题是es配置不支持正则,连基本的分割字符串split也不能使用。运维应该也不想开这个,影响效率。
想过能否使用java代码结合,但是script脚本中不支持 java代码工具类传参。

能否使用正常的脚本实现该功能?或者其他的解决方案?

0

  • 编辑 收藏 删除
  • 追加酬金 (90%的用户在追加酬金后获得了解决方案)

    当前问题酬金

    ¥ 15 (您已提供 ¥ 20, 还可追加 ¥

    支付方式

    扫码支付

    加载中...

    提供问题酬金的用户不参与问题酬金结算和分配

    支付即为同意 《付费问题酬金结算规则》

    4 条回答 默认 最新

    查看更多回答(-1条)

    报告相同问题?

    问题事件

    • (查看结题原因) 1月15日
    • 已采纳回答 1月15日
    • 修改了问题 1月15日
    • 创建了问题 1月15日

    悬赏问题

    • ¥20 关于扑克牌对弈的问题 c++http客户端发送怎么写 meterpreter的session维持 GATTC的多设备连接 javaweb图书管理系统 matlab手动标定时载入.mat文件报错 反编译的dll函数名和变量名全是英文和数字还有特殊符号,这个怎么解决 jna:结构体套结构体数组,java->dll 只能获取数组的第一个元素