0

我正在尝试在 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)

我知道我可以使用带有范围查询的数组字段来搜索任何一个字段,但我不确定如何关联相关数据。如果仅在星期三提供托儿服务,我不希望该组织在搜索星期一时出现。

4

1 回答 1

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 模式时,您将拥有特定于场景的字段。请记住,它不是关系数据库,您的数据应该是非规范化的。

于 2010-12-08T18:43:58.677 回答