gpt4 book ai didi

ruby-on-rails - 如何汇总Elasticsearch结果的提升点并对其进行排序?

转载 作者:行者123 更新时间:2023-12-02 23:05:30 25 4
gpt4 key购买 nike

我有User模型。

class User < ActiveRecord::Base
attr_accessible :last_visited_at, :friend_id, :blacklisted
has_many :friends
end

和条件:
  • 如果描述中存在短语,则给该用户打10分。
  • 如果最后一次访问是在3天之前,请给该用户评分5。
  • 如果有任何 friend ,给该用户一个8分。
  • 如果已列入黑名单,请在结果列表的末尾显示此用户,而不取决于分数。

  • 如何使用Elasticsearch来实现呢?如何计算用户点数并对搜索结果排序?

    现在我有
    def self.search(params)
    tire.search(load: true) do
    query do
    custom_filters_score do
    query { all }

    filter do
    filter :range, last_contact_at: { gte: 3.days.ago }
    boost 1
    end

    score_mode :total
    end
    end
    end
    end

    编辑:

    在第4点中,如果用户进入黑名单,我想将分数重置为0。

    最佳答案

    看一下custom_filters_score查询,它的确切目的是:通过匹配文档的过滤器数量来影响_score。轮胎集成:https://github.com/karmi/tire/blob/master/test/integration/custom_filters_score_queries_test.rb

    (当然,您可以使用针对custom_score查询https://github.com/karmi/tire/blob/master/test/integration/custom_score_queries_test.rb的脚本手动计算分数,但效果不佳,表现力/可维护性较低。)

    关于ruby-on-rails - 如何汇总Elasticsearch结果的提升点并对其进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17292390/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com