Solr多值日期范围从两个单独的字段作为子实体

时间:2013-07-15 06:33:01

标签: solr date-range multivalue

我是Apache Solr的初学者。 我的data-config.xml包含此代码

<entity name="event">                        
<field column="event_id" name="id" />
...
<entity name="request_history" query="select request_date, request_expiry_date from request_history where id=event.id">
   <field column="request_date" name="start_date" />
   <field column="request_expiry_date" name="expire_date" />
</entity>

以下是针对这些字段的shcema.xml文件中的内容

<field name="start_date" type="tdate" indexed="true" stored="true" multiValued="true"/>
<field name="expire_date" type="tdate" indexed="true" stored="true" multiValued="true"/>

因此,对于单个事件,可能存在多个请求,因此多个“start_date”和“expire_date”。现在,我需要查找日期范围内的所有请求以及所有不在给定日期范围内的请求,但不能找到任何方式。

2 个答案:

答案 0 :(得分:1)

根据事件将开始日期和到期时间索引为单个多值字段,例如event_date。而不是将它们分成两个区域 因此,每个事件都会有一个开始日期和到期日期相关的条目,fq=start_date:[NOW TO *] AND expire_date:[* TO NOW]查询可以正常工作。
使字段动态,以便您不需要配置。

答案 1 :(得分:1)

我找到了解决问题的一种非常简单的方法,alhamdulillah。它是一个简单的查询模式 -

-(start_date: [2013-07-01T0:00:00Z TO 2013-07-18T0:00:00Z] AND end_date: [2013-07-01T0:00:00Z TO 2013-07-18T0:00:00Z]) 

这实际上是我需要的。