2010-12-08 1 views
0

복잡한 검색을 수행하기 위해 Solr에서 필드를 설정하려고합니다.복잡한 데이터 Solr 스키마 설정 도움말

사용자가 요일과 시간대에 제공되는 작업 시간과 서비스 시간을 기준으로 조직을 찾을 수 있기를 바랍니다.

예 : Find all organizations open Monday at 3pm offering childcare service and Spanish speakers.

필드는 다음과 같습니다

- day of week open (long) 
- open time (long) 
- close time (long) 
- services offered (long) 
- languages spoken (long) 

나는 내가 어떤 하나 개의 필드에 검색 범위 질의로 배열 필드를 사용할 수 있습니다 알고 있지만 나는 상관 관계를하는 방법을 잘 모르겠어요 관련 데이터. 수요일에 보육 서비스 만 제공된다면 나는 월요일을 검색 할 때 조직이 나타나기를 원하지 않습니다.

답변

2

어떤 종류의 쿼리가 필요한지에 따라 크게 달라질 수 있습니다. 일반적으로 그것은 단지 하나 개의 샘플 쿼리에서 전체 스키마를 설계 할 수 아니지만, 여기 시작이다 :

name: string/text 
services: multiValued string 
languages: multiValued string 
opentime: multiValued string 
servicestime: multiValued string 

샘플 문서 :

name: Foo org 
services: childcare, something_else 
languages: English, Spanish 
opentime: Monday 9AM, Monday 10AM, ..., Monday 4PM, Tuesday 9AM, ..., Tuesday 4PM 
servicestime: childcare Monday 9AM, ..., childcare Monday 12PM 

귀하의 샘플 쿼리 : "모든 조직을 찾기는 오후 3시 월요일에서 탁아 서비스 및 스페인어 연설자 제공 "은 servicestime:"Monday 3PM" AND languages:Spanish과 같이이 스키마로 번역 될 수 있습니다 (월요일 오후 3시에 조직이 열려 있음을 암시합니다).

일반적으로 Solr 스키마를 디자인 할 때 시나리오 별 필드가 있습니다. 관계형 데이터베이스가 아니므로 데이터가 비정규 화되어야합니다.

+0

Solr의 작동 방식을 이해하면 이러한 사고 방식이 많은 의미를 갖습니다. –

+0

이 문제에 대해 생각하고 있었지만 범위 쿼리가 제대로 작동하는지 확신 할 수 없었습니다. 그렇게하는 방법을 알고 있습니까? 제가 생각할 수있는 유일한 것은 당신이 그들을 연결하고 나서 {monday9 to monday11} 같은 것을 찾으면됩니다. – Xodarap

+0

@Xodarap :'opentime : "Monday 9AM"AND opentime : "Monday AMAM"AND opentime : "Monday 11AM"'단순한 for 루프로 클라이언트 쪽 질의를 쉽게 생성 할 수 있습니다. –