假设我有以下表格:
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中实现类似的功能。