0

我是 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”。现在我需要找到一个日期范围内的所有请求以及不在给定日期范围内的所有请求,但没有任何方法。

4

2 回答 2

1

根据事件将开始日期和到期日索引为单个多值字段,例如event_date。而不是将它们分成两个领域。
这样每个事件都会有一个开始日期和到期日期组合的条目,并且fq=start_date:[NOW TO *] AND expire_date:[* TO NOW]查询对您来说可以正常工作。
使字段动态化,以便您无需配置。

于 2013-07-15T07:00:41.637 回答
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]) 

这实际上是我需要的。

于 2013-07-18T05:40:42.930 回答