2016-08-06 59 views
1

如何在Mysql下面轉換爲solr? 我嘗試使用solr連接來實現它,但我不知道如何在通過IN Query的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' 
     ) 

回答

1

你不能! Solr不是一個關係數據庫,並不是爲了直接匹配你的結構而設計的。相反,它旨在更容易地找到事物。所以,你必須從你試圖找到的東西和你的數據庫映射到那個想法。

就你而言,粒度似乎是某種可用性。因此,也許這將成爲您的Solr文檔與hotelId,RoomId,RoomType,DateAvailable(單日)。然後,您基本上會查找所有適合您的範圍的DateAvailable房間。也許按RoomId分組。然後,您需要使用Solr或甚至在原始數據庫中檢查可用性是否連續。

+0

您可能會發現這個(相當陳舊的)演示文稿有助於理解爲什麼我建議代表與Solr對象不同級別的信息:http://www.slideshare.net/trenaman/personalized-search-on-the-largest-flash美國銷售網站(幻燈片39是重點) –

相關問題