如何使用in查询实现solr联接中的多个条件


How to do multiple condition in solr join using IN query?

如何将Mysql下面的内容转换为solr?我尝试过使用solr联接来实现它,但我不知道如何通过in查询在solr联接中使用多个条件。

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还是在原始数据库中。