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

Laravel房产列表应用Saved Search功能实现技术咨询

实现房产应用的Saved Search(保存搜索)与自动通知功能

一、保存搜索条件的落地步骤

1. 数据库表设计

首先得建一张saved_searches表,用来存储用户的搜索配置,字段可按需求设置:

  • id:自增主键
  • user_id:关联用户表的外键,确保搜索归属特定用户
  • search_name:用户自定义的搜索名称(比如“朝阳区刚需两居”),方便用户识别
  • location:搜索的位置(可存区域名称或关联位置表ID,根据现有数据库结构调整)
  • bedrooms_min/bedrooms_max:卧室数的上下限,允许为空(用户未设置则跳过该条件)
  • property_type:房产类型(可用枚举值如公寓/别墅/商住,或关联类型表ID)
  • price_min/price_max:价格范围,允许为空
  • notification_method:通知方式(存email/sms,或用位存储多选,比如1代表邮件、2代表短信)
  • created_at/updated_at:记录搜索的创建与修改时间

2. 前后端交互实现

  • 前端:在搜索页面或搜索结果页添加“保存搜索”按钮,点击后弹出输入框让用户命名搜索,随后将当前搜索参数(位置、卧室数、价格范围、房产类型)和用户选择的通知方式一并传给后端接口。
  • 后端:接收参数后先验证用户登录状态,再将数据插入saved_searches表;同时提供管理接口,支持用户查看、编辑、删除自己的保存搜索。

二、新房源匹配的两种思路

1. 触发时机选择

  • 实时触发:每次新房源上架时,立即用该房源匹配所有保存的搜索。适合房源量较小的场景,但用户量或保存搜索量较大时,会拖慢房源发布接口的响应速度,不推荐大流量场景使用。
  • 定时批量触发:每天选择用户活跃度低的时段(比如凌晨2点),拉取前24小时内发布的新房源,再批量与所有保存搜索做匹配。这种方式性能可控,是大多数房产应用的首选方案。

2. 匹配逻辑实现

匹配本质是将房源属性与保存的搜索条件做对比,和已实现的基础搜索逻辑一致。用SQL实现批量匹配的示例如下:

SELECT ss.user_id, ss.notification_method, p.id AS property_id, p.title, p.price, p.location
FROM saved_searches ss
JOIN properties p ON 
    -- 位置匹配:未设置则跳过
    (ss.location IS NULL OR p.location = ss.location)
    -- 卧室数匹配:满足上下限,未设置则忽略
    AND (ss.bedrooms_min IS NULL OR p.bedrooms >= ss.bedrooms_min)
    AND (ss.bedrooms_max IS NULL OR p.bedrooms <= ss.bedrooms_max)
    -- 房产类型匹配:未设置则跳过
    AND (ss.property_type IS NULL OR p.property_type = ss.property_type)
    -- 价格匹配:满足范围,未设置则跳过
    AND (ss.price_min IS NULL OR p.price >= ss.price_min)
    AND (ss.price_max IS NULL OR p.price <= ss.price_max)
-- 仅匹配过去24小时的新房源
WHERE p.created_at >= DATE_SUB(NOW(), INTERVAL 1 DAY)
GROUP BY ss.id, p.id;

该查询会直接输出所有符合条件的用户-房源配对,可基于此结果发送通知。

三、自动通知的实现细节

1. 通知内容组装

  • 邮件:采用HTML模板排版,将匹配的房源列表整理清晰,每个房源包含标题、位置、价格、卧室数及房源详情页跳转链接,可搭配房源缩略图提升直观性。
  • 短信:内容需简洁,例如“您关注的【朝阳区刚需两居】有3套新房源:XX小区两居350万,点击短链查看”,注意控制字数,链接可使用短链压缩。

2. 通知发送机制

  • 邮件:使用后端语言对应邮件库(如Python的smtplib、Node.js的nodemailer),若担心送达率,可对接第三方邮件服务(如SendGrid)。
  • 短信:对接第三方短信服务商(如Twilio、阿里云短信),调用其API发送,同时需处理发送失败的情况(如重试、记录日志)。
  • 异步处理:若匹配结果较多,同步发送会导致请求超时,建议用任务队列(如Celery、Redis Queue)异步处理通知发送,避免阻塞主流程。

四、性能优化小技巧

  • 索引优化:在properties表的created_at、location、bedrooms、property_type、price字段上建立联合索引,加快匹配查询速度。
  • 分页处理:若保存搜索数量极大,批量匹配时分页查询,避免一次性加载过多数据导致内存溢出。
  • 用户自主设置:提供通知频率调整(如每日/每周)、暂停通知等选项,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:10:40