2010-12-08 87 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

這取決於你需要什麼類型的查詢。一般來說它不可能僅僅從一個簡單的查詢設計整個架構,但這裏是一個開始:下午3點「查找所有組織開放時間爲週一:

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 

您的示例查詢提供托兒服務和講西班牙語的人「可以被翻譯成這個模式:servicestime:"Monday 3PM" AND languages:Spanish(這意味着如果它在週一下午3點提供服務,該組織是開放的)。

一般來說,在設計Solr模式時,您將有特定於場景的字段。記住它不是一個關係數據庫,你的數據應該是非規範化的。

+0

當你瞭解Solr是如何工作的時候,這種思維方式很有意義。 – 2010-12-08 18:57:44