2012-12-18 4 views
0

내가 집 예약 웹 사이트의 일종을 짓고 있어요, 내가 집 가용성에 따라 개체를 필터링 할 수있는 몇 가지 검색 엔진/데이터베이스 알고리즘을 찾고 있어요는솔루션

지금의 말을하자 날짜 나는 House1을 가지고있다. (available dates : Jan1, Jan20, Jan23)

그리고 나는 모든 객체에 대해 날짜를 조회한다. Jan2-Jan3 - 나는 그 객체를 찾아야하고, Jan6-Jan8을 질의하면 발견해야한다. 그것

(참고 : 나는 수천 개의 개체와 다양한 검색 필터를 가지고 있으며 검색은 빨리 작동해야합니다.)

+0

SQL 데이터베이스를 사용하고 있습니까? – Niklas

+0

데이터는 SQL 데이터베이스에 저장되지만 다른 엔진 (sorl, elasticsearch, mongo)에있을 수있는 검색 색인에만 사용할 수 있습니다. –

답변

0

'수천 개의 개체'처리에는 SQL에서 인덱싱이 수 밀리 초가 걸립니다. 아래 내용은 MySQL/SQL-Server에서 할 수있을만큼 간단하다는 것을 알고 있습니다.

구조 : (의사 코드)

House(ID INT, ...) 
Availability(ID INT, HouseID INT, Start DATETIME, Finish DATETIME) 
/* Index on Availability (Start, Finish) */ 

쿼리 :

SELECT DISTINCT H.ID, ... 
FROM House H JOIN Availability A ON A.HouseID = H.ID 
WHERE A.Start <= @DesiredFinish AND @DesiredStart <= A.Finish 

이 지정된 날짜와 가용성을 중복 모든 주택을 반환합니다.