我有User
模型。
class User < ActiveRecord::Base
attr_accessible :last_visited_at, :friend_id, :blacklisted
has_many :friends
end
和条件:
- 如果描述中存在短语,则给该用户打 10 分。
- 如果上次访问时间少于 3 天,则给该用户打 5 分。
- 如果有朋友,给这个用户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。