根据各种过滤条件匹配特定广告

时间:2020-09-28 08:25:57

标签: php elasticsearch redis logic weblogic

我需要一些实现方面的帮助,但不确定如何实现。

我正在运行类似分类广告的eBay网站。我的网站上有很多过滤器,例如您可以按价格,类别,城市,条件过滤广告... 假设我们有以下用例:

  • 用户可以使用过滤器过滤我网站上的广告
  • 完成此操作后,他可以保存这些过滤器,并在有人提交与这些过滤器匹配的广告时订阅以获取推送通知
  • 我将这些过滤器保存在该用户的数据库中
  • 在此示例中,假设我的网站有大约10万个有效订阅。

显然,第一步显然是在将广告保存到数据库的代码中攻击一个地方。我对如何确定该特定广告是否与这些过滤器匹配存在疑问。

我需要经过10万个订阅及其过滤器,才能知道哪个过滤器与已发布的广告匹配。对我来说听起来不太好,可能是100万个过滤器或更多。

有人可以帮助我,或者至少将我指向正确的方向。

这是基本版本。

过滤器:

  • 国家,县,市
  • 最低价格,最高价格
  • 条件(新,旧...)
  • 有/无图片的广告

用户A订阅了一组过滤器:

  • 伦敦,英国
  • 最低价格:200€
  • X
  • X

用户B订阅了一组过滤器:

  • 英国
  • 最高价格:500€
  • X

用户C订阅了一组过滤器:

  • 德国
  • 最低价格:200€
  • X
  • 有图片

用户X提交的广告包含以下数据:

  • 城市:伦敦
  • 价格:300€
  • 条件:新

在这种情况下,用户A和用户B需要获得推送通知,因为广告与其过滤器匹配。

1 个答案:

答案 0 :(得分:0)

关于可以做什么的非常高级的看法。

API :创建API getFilteredAds ,并传递请求:

  1. 上下文信息(user_id等)
  2. 过滤器

过滤器:

  1. 在后端保存用户过滤器
  2. 点击过滤器用户界面时,可以调用API“ getFilteredAds”

正在处理:

  1. getFilteredAds可以根据所选过滤器从Elastic Search获取数据。 (您可以使用任何模板工具定义ES查询模板并根据请求中提供的过滤器数据生成实际查询)