You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设计房产网站搜索提醒系统?新房源匹配自动发邮件

房产网站搜索提醒系统设计方案

核心问题解答

是的,必须找到匹配新房源的用户搜索提醒并发送邮件,这是实现该功能的核心逻辑。


1. 数据库表扩展

首先需要新增两张关键表来支撑功能:

存储用户保存的搜索过滤器

CREATE TABLE saved_searches (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    location VARCHAR(255),
    size VARCHAR(255),
    is_active BOOLEAN DEFAULT TRUE, -- 支持用户开启/关闭提醒
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) -- 假设已有用户表存储邮箱等信息
);

记录已发送的提醒(避免重复推送)

CREATE TABLE search_alerts_sent (
    saved_search_id INT,
    property_id INT,
    sent_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (saved_search_id, property_id), -- 唯一组合,防止重复发送
    FOREIGN KEY (saved_search_id) REFERENCES saved_searches(id),
    FOREIGN KEY (property_id) REFERENCES property(id)
);

2. 触发提醒的两种方案

方案一:实时异步触发(推荐高并发场景)

当新房源插入property表后,不直接同步执行匹配逻辑,而是通过消息队列异步处理:

  • 房源入库成功后,把房源ID、location、size打包成消息发送到队列(比如RabbitMQ/Kafka)
  • 单独的消费者服务监听队列,取出消息后:
    1. 从saved_searches中查询所有location和size匹配且is_active=true的搜索记录
    2. 对每条匹配记录,检查search_alerts_sent中是否已有该搜索+房源的组合,跳过已发送的
    3. 调用邮件服务给对应的用户发送提醒,内容包含房源详情和取消提醒的链接
    4. 发送成功后,在search_alerts_sent中插入一条记录

这种方式不会阻塞房源入库的主流程,避免影响网站核心功能。

方案二:定时批量触发(适合低流量场景)

如果网站用户量不大,可以用定时任务(比如Linux Cron、Java Quartz)定期执行:

  • 每隔1小时/半天,查询这段时间内新增的房源
  • 对每个新增房源,执行和实时方案一样的匹配、去重、发送逻辑
  • 或者反过来,遍历所有活跃的saved_searches,查询这段时间内新增的匹配房源再发送

优点是实现简单,对主业务无影响;缺点是提醒有延迟,用户不能第一时间收到通知。

3. 性能优化点

  • 给saved_searches的location和size加联合索引,加快匹配查询:
    CREATE INDEX idx_search_location_size ON saved_searches(location, size);
    
  • 给property表的location、size和新增的created_at字段加索引,方便快速筛选新增房源
  • 如果后续数据量极大,可以考虑用Elasticsearch存储房源和搜索条件,用全文检索做快速匹配,比纯SQL效率高很多

4. 业务细节补充

  • 邮件里必须放取消该搜索提醒的链接,点击后把saved_searches的is_active设为false或者直接删除记录
  • 限制每个用户最多保存的搜索数量(比如5个),避免无效数据过多
  • 记录邮件发送状态,失败的可以重试2-3次,还是失败的就标记下来,后续可以手动处理

内容的提问来源于stack exchange,提问作者GuardianAngel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:06:19