Laravel大量定制搜索

时间:2017-02-06 11:04:15

标签: php mysql laravel laravel-5.3

我在搜索时遇到了麻烦。

这是我的表

  

车辆
  id |描述| weight_max | weight_empty | user_id | category_id | TYPE_ID

     

类别
  id |名字|描述|颜色

     

类型
  id |名字

     

vehicle_usages
  id |日期来自|日期到| vehicle_id | location_id | usage_type_id

     

地点
  id |地址| lat | LNG

搜索表单包含category,多个typesdate fromdate tozip coderadius和自定义类别相关的车辆详细信息

现在我想通过上面命名的标准来过滤车辆(目前大约10k行)。 首先,我检查请求数组是否包含类别,以及值是否为整数。如果是这样,我会使用$vehicles = Vehicle::where('category_id', $request['category']);按类别过滤所有车辆 然后我对类型执行相同的操作,并将每种类型推送到数组中以使用$vehicles->whereIn('type_id', $types) 在此之后,我获得了$vehicles = $vehicles->get()之类的所有车辆 如果已完成,我会通过邮政编码获取当前latlng,并按当前位置计算每辆车的半径。如果半径大于输入radius,我拒绝车辆 至少每个vehicle_usage与输入date fromdate to重叠的车辆都会被拒绝。

通过大约10k vehicles,每辆车每月约有vehicle_usages,此搜索需要很长时间,并达到最长执行时间(60秒)。 我怎样才能加速搜索?

1 个答案:

答案 0 :(得分:0)

我建议您使用laravel scoutAlgoliaElasticSearch。然后你的搜索速度会快一千倍。

如果您不想使用第三方服务,可以使用MySQL Full-Search功能。

按照链接获取更多信息。