我正在建立一些房屋预订网站,我正在寻找一些可根据房屋可用日期过滤对象的搜索引擎/数据库算法
所以我想说我有House1(可用日期:Jan1 ... Jan7,Jan20,Jan23)
如果我查询日期Jan2-Jan3的所有对象 - 我应该找到该对象,如果我查询Jan6-Jan8 - 我应该找到它
(注意:在数据库中我有数千个对象和各种搜索过滤器,搜索应该可以快速运行)
答案 0 :(得分:0)
在SQL中使用索引处理“数千个对象”需要几毫秒。我知道下面的内容很简单,可以在MySQL / SQL-Server中完成。
结构:(伪代码)
House(ID INT, ...)
Availability(ID INT, HouseID INT, Start DATETIME, Finish DATETIME)
/* Index on Availability (Start, Finish) */
查询:
SELECT DISTINCT H.ID, ...
FROM House H JOIN Availability A ON A.HouseID = H.ID
WHERE A.Start <= @DesiredFinish AND @DesiredStart <= A.Finish
这将返回与指定日期的可用性重叠的所有房屋。