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