如何使用IN查询在solr join中执行多个条件?

时间:2016-08-06 09:38:53

标签: php mysql solr lucene search-engine

如何在Mysql下面转换为solr? 我尝试使用solr join来实现它,但我不知道如何通过IN Query在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'
        )

1 个答案:

答案 0 :(得分:1)

你不能! Solr不是关系数据库,不能直接匹配您的结构。相反,它旨在让事情变得更容易。因此,您必须从想要查找的内容进行反思,并将数据库映射到该数据库。

在您的情况下,粒度似乎是某种可用性。所以,也许这会成为您的Solr文档,包括hotelId,RoomId,RoomType,DateAvailable(单日)。然后你基本上寻找所有正确类型的房间,DateAvailable落在你的范围之间。也许由RoomId分组。然后,您需要使用Solr或甚至在原始数据库中检查该可用性是否是连续的。