我正在研究一些當範圍過濾器處於活動狀態時,範圍構面將相應更新的內容。如果沒有過濾器,我使用默認範圍&的差距。如果設置了過濾器,我會進行第二次solr調用以重新計算小平面範圍間隙。Solr:計算兩個給定日期之間的差值,其中一個值爲*
因此,例如,首先我會展示10年差距的範圍方面。當你過濾其中的一個時,它會顯示1YEAR的10個範圍分面。如果你再次過濾,它會顯示12個桶,1個月的範圍等...
這種作品,但我有麻煩時,範圍過濾器包括*。 Solr知道如何在給出solrfield:[1960-01-01T00:00:00Z TO *]時正確地過濾結果,但我不知道如何根據*重新計算日期範圍刻面間隙。現在我計算兩個日期之間的差異作爲unix時間戳,並基於此計算範圍間隔。
另外,有沒有一個名字,我想在這裏做什麼?我稱之爲'可變範圍空白',但我不確定這是否正確。
我甚至不確定我所做的是否是最好的方法。任何建議是受歡迎的。
編輯:我的問題歸結爲:我想計算每個solr查詢中字段的最高和最低日期之間的差異(如unix timestamp)。編輯2:我做的每個solr調用大約需要300ms(在一個相對較小的索引上)。這是相當多的情況下,我做了2個額外的電話與日期排序查找查詢中的最高和最低日期值。然後用正確的日期間隔(並從/到值)執行第4次solr調用,會稍微慢一些。
我能想到的唯一方法就是在日期字段上使用faceting並設置'facet.limit = -1'(或任何其他負數)。但是這對你來說可能是行不通的,因爲它會帶回每個價值的日期以及每個價值的記錄。 – 2012-09-06 03:30:38