2016-08-06 6 views
1

어떻게 mysql을 solr로 변환 할 수 있습니까? solr 조인을 사용하여 구현하려고했지만 sol 쿼리에서 IN 조건을 통해 여러 조건을 사용하는 방법을 모릅니다.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' 
     ) 

답변

1

수 없습니다! Solr은 관계형 데이터베이스가 아니며 직접 구조와 일치하도록 설계되지 않았습니다. 대신 그것은 쉽게 물건을 찾을 수 있도록 설계되었습니다. 따라서, 당신은 당신이 찾고자하는 것을 거꾸로 생각해야하고 당신의 데이터베이스를 그것으로 매핑해야합니다.

경우에 따라 입상 성은 어느 정도 유효합니다. 아마도 hotelId, RoomId, RoomType, DateAvailable (하루)로 Solr 문서가 될 것입니다. 그런 다음 기본적으로 DateAvailable이 범위 사이에있는 올바른 유형의 모든 객실을 찾습니다. 아마도 RoomId에 의해 그룹화되었습니다. 그런 다음 Solr 또는 원본 데이터베이스에서도 가용성이 지속되는지 확인해야합니다.

+0

이 mysql 코드는 날짜 범위 사이에 사용할 수있는 두 가지 유형의 객실 (성인 1 명과 어린이 2 명과 성인 2 명)을 갖는 모든 호텔을 찾으려고합니다. – user2665477

+0

Solr 객체와 다른 수준의 정보 표현을 제안하는 이유를 이해하는 데 도움이되는 (꽤 오래된) 프레젠테이션을 찾을 수 있습니다. http://www.slideshare.net/trenaman/personalized-search-on-the-largest-flash -sale-site-in-america (슬라이드 39가 가장 중요 함) –