0

複雑な検索を行うために、Solr でフィールドを設定しようとしています。

ユーザーが、営業時間と提供されるサービスに基づいて、1 日と時間帯に組織を検索できるようにしたいと考えています。

例: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)

範囲クエリで配列フィールドを使用して任意のフィールドを検索できることはわかっていますが、関連するデータを関連付ける方法がわかりません。託児サービスが水曜日のみ提供されている場合、月曜日を検索したときに組織が表示されないようにします。

4

1 に答える 1

2

必要なクエリの種類によって大きく異なります。一般に、1 つのサンプル クエリだけからスキーマ全体を設計することはできませんが、ここから始めます。

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 スキーマを設計するときは、シナリオ固有のフィールドがあります。これはリレーショナル データベースではないことに注意してください。データは非正規化する必要があります。

于 2010-12-08T18:43:58.677 に答える