可以说我有以下表格:

products: id, name, latitude and longitude
users: id, name, latitude, longitude
interests: id, name
user_interests: user_id, interest_id

只要使用模型观察器创建/编辑弹性搜索,就会将这些插入/更新到弹性搜索中 .

现在我想在弹性搜索中创建自定义脚本/评分功能,当用户搜索产品时,它将返回匹配的分数 . 评分将基于用户位置和产品之间的距离,用户兴趣和产品名称匹配等 .

作为弹性搜索的新手,有什么方法可以实现这一目标?任何教程,在线资源或示例都非常感谢 .

PS:我使用PostgreSQL作为数据库 . 我可以创建一个名为get_match(product_id,user_id)的函数,它根据匹配条件返回一个数字(0-100),并执行以下操作:

//psuedo sql 
select p.name, get_match(p.id, u.id) as match
from products p, users u
order by match desc

如果可能的话,我想在elasticsearch中实现类似的功能 .