2016-08-06 1 views
1

Как преобразовать ниже Mysql в solr? Я попытался использовать solr join для его реализации, но я не знаю, как использовать несколько условий в solr join через IN Query.Как сделать несколько условий в соединении solr с использованием запроса IN?

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

Этот код mysql попытается найти все гостиницы, в которых есть два типа номеров (1 взрослый с 0 детьми и 2 взрослых с 1 ребенком), который доступен между диапазоном дат. – user2665477

+0

Вы можете найти эту (довольно старую) презентацию, полезную для понимания того, почему я предлагаю представить другой уровень информации как объект Solr: http://www.slideshare.net/trenaman/personalized-search-on-the-largest-flash -sale-site-in-america (Слайд 39 - это пуантин) –

Смежные вопросы