Solr中数据范围的非规范化和搜索

Solr中数据范围的非规范化和搜索,solr,Solr,我需要从Solr返回基本上有“中断期”的文档 因此,我需要返回所有没有为传入的日期范围定义黑屏期的文档 我目前仍在进行“模式设计阶段”,但我想确保我试图通过Solr实现的目标是可行的和合乎逻辑的(一旦Join可用,这看起来很简单,但在此之前……) 我的想法是这样的,使用多值字段: <doc> <field name="id">1</field> <field name="name">My Item Name</field>

我需要从Solr返回基本上有“中断期”的文档

因此,我需要返回所有没有为传入的日期范围定义黑屏期的文档

我目前仍在进行“模式设计阶段”,但我想确保我试图通过Solr实现的目标是可行的和合乎逻辑的(一旦Join可用,这看起来很简单,但在此之前……)

我的想法是这样的,使用多值字段:

<doc>
  <field name="id">1</field>
  <field name="name">My Item Name</field>
  <field name="unavailableDateRange">1/23/2012-1/27/2012</field>
  <field name="unavailableDateRange">3/14/2012-3/19/2012</field>
</doc>
<doc>
  <field name="id">2</field>
  <field name="name">My Item Name</field>
  <field name="unavailableDateRange">2/15/2012-2/20/2012</field>
</doc>

1.
我的商品名称
1/23/2012-1/27/2012
3/14/2012-3/19/2012
2.
我的商品名称
2/15/2012-2/20/2012
显然,我需要弄清楚语法,以确保日期范围正确地输入到索引中,以及查询日期的正确方式,但为了清楚起见,这里

因此,在搜索项目时,我只想返回在请求时间内可用的项目

示例:如果传入日期为2012年2月13日至2012年2月16日,则将返回项目1,但不会返回项目2

我的问题是: -这是Solr支持的日期范围查询功能吗? -我在这里是否应该注意性能问题


提前感谢您提供的任何见解。

Solr非常支持日期。您可以像对任何其他字段一样使用范围查询:但是字段必须是单个日期,而不是日期范围本身

对于您的情况,我每天都会在unavailableDateRange字段中列出应该在范围内(多值字段)的值。索引不应该太大,而且很容易实现用于索引和查询的bot

查询示例:

./select/?q=NOT unavailableDateRange:[2012-02-13T00:00:00Z TO 2012-02-16T00:00:00Z]