2012-01-09 85 views
0

我需要从Solr返回基本上具有“中断期”的文档。在Solr中非规范化和搜索日期范围

所以,我需要返回没有针对在通过的日期范围定义的封锁期的所有文件。

我目前仍然通过“架构设计阶段”的工作,但希望以确保我试图完成什么是可能的和逻辑与Solr(一旦加入可用,这似乎是微不足道的,但在那时......)

我在想这样的事情,使用多值字段:

<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> 

很明显Ÿ我需要弄清楚的语法,以确保物品在搜索时的日期范围进入正常的指数,以及查询日期的正确方法,但为了清楚起见这里....

所以, ,我只想返回在请求时间内可用的项目。

例如:如果日期2/13/2012 - 2012/2/16没有成交,第1项将被返回,但第2项不会。

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

谢谢你提前为任何见解可以提供。

回答

1

Solr的支持日期,非常漂亮。您可以使用任何其他字段上的范围查询:SolrQuerySyntax但是,字段必须是单一日期,而不是日期范围本身。

对于你情我愿每天都应该在范围内(多值字段)列出unavailableDateRange领域。索引不应该那么大,并且很容易实现机器人索引和查询。

实施例的查询:

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