2013-07-15 23 views
0

我是一個Apache Solr初學者。 我的數據-config.xml中包含此代碼Solr多值日期範圍從兩個單獨的字段作爲子實體

<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」。現在我需要查找日期範圍內的所有請求以及所有請求不在給定日期範圍內的請求,但不能獲得任何方式。

+0

fq = start_date:[NOW TO *] AND expire_date:[* TO NOW]將過濾結果。但是,是否將結束日期與開始日期相匹配? – Jayendra

+0

是@Jayendra,這是主要問題實際上 – Sadat

回答

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

這就是我所需要的。

1

按照事件將單個多值字段的開始日期和過期索引,例如, event_date。而不是把它們分成兩個區域。
爲了讓每個事件都有一個開始日期和到期日期的組合,並且fq=start_date:[NOW TO *] AND expire_date:[* TO NOW]查詢可以正常工作。
使字段動態,以便您不需要配置。

+0

在這裏請求日期提議組織該日期的事件英寸所以我沒有在這裏的初始事件日期。 – Sadat

+0

您可以維護事件並使用Solr部分更新來在創建事件時插入日期。 – Jayendra