如何将下面的Mysql转换为solr? 我尝试使用 solr join 来实现它,但我不知道如何通过 IN 查询在 solr join 中使用多个条件。
SELECT *
FROM rooms
WHERE
departure_g_date = "2016-08-04T00:00:00Z"
AND returning_g_date = "2016-08-05T00:00:00Z"
AND (room_adults_child = '1-0' OR (room_adults_child = '2-1' AND child_age = 1))
AND hotel_id IN (
SELECT hotel_id
FROM rooms
WHERE
departure_g_date = "2016-08-04T00:00:00Z"
AND returning_g_date = "2016-08-05T00:00:00Z"
AND room_adults_child = '1-0'
)
AND hotel_id IN (
SELECT hotel_id
FROM rooms
WHERE
departure_g_date = "2016-08-04T00:00:00Z"
AND returning_g_date = "2016-08-05T00:00:00Z"
AND room_adults_child = '2-1'
)
最佳答案
你不能! Solr 不是关系数据库,其设计目的不是直接匹配您的结构。相反,它的目的是让事情变得更容易。因此,您必须从您试图查找的内容开始向后思考,并将数据库映射到该内容。
就您而言,粒度似乎是某种可用性。因此,也许这会成为您的 Solr 文档,其中包含 hotelId、RoomId、RoomType、DateAvailable(单日)。然后,您基本上会查找 DateAvailable 在您的范围内的正确类型的所有房间。也许按 RoomId 分组。然后,您需要检查该可用性是否是连续的,无论是使用 Solr 还是在原始数据库中。
关于php - 如何使用 IN 查询在 solr join 中执行多个条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38802797/