Справка по настройке схемы Solr для сложных данных - PullRequest
0 голосов
/ 08 декабря 2010

Я пытаюсь настроить поля в 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)

Я знаю, что могу использовать поле массива с запросом диапазона для поиска по любому полю, но яЯ не уверен, как соотнести соответствующие данные.Если услуги по уходу за детьми предлагаются только в среду, я не хочу, чтобы организация появлялась при поиске в понедельник.

1 Ответ

2 голосов
/ 08 декабря 2010

Многое зависит от того, какие запросы вам понадобятся. В целом, невозможно спроектировать всю схему только из одного примера запроса, но вот начало:

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 у вас будут поля, специфичные для сценария. Помните, что это не реляционная база данных, ваши данные должны быть денормализованы.

...