Solr インデックス内のすべてのドキュメントには、ドキュメントが Solr に追加された ISO 8601 日付を含む「追加」フィールドがあります。
<result name="response" numFound="34587104" start="0">
<doc>
<date name="added">2013-03-04T01:00:26Z</date>
<str name="text">Hello, world!</str>
<str name="id">93416604d274d28a44e14a9535bb9e6e1db3d851</str>
<str name="_version_">1428536769315340290</str>
</doc>
<result/>
ドキュメントが削除されないと仮定すると、1 日あたりインデックスに存在するドキュメントの数をどのようにカウントできますか? たとえば、2013 年 3 月 5 日にインデックスに含まれていたドキュメントの数を知るために、クエリを実行できますq=added:[* TO 2013-03-05T00:00:00Z]
。ただし、1 か月前から今日まで、毎日インデックスに含まれていたドキュメントの数を知る必要があります。
解決策の 1 つは、1 か月前の日付にインデックスに含まれていたドキュメントの数をクエリし、毎日追加されたドキュメントの数をファセットして、累積カウントに追加することです。擬似コード:
initial_count = q=added:[* TO NOW/MONTH-1MONTH]
running_total = initial_count;
daily_added_array = facet.range=added
& f.added.facet.range.start=NOW/MONTH-1MONTH
& f.added.facet.range.end=NOW/DAY-1DAY
& f.added.facet.range.gap=+1DAY
foreach (daily_added_array as day) {
running_total += day;
printf(running_total);
}
ただし、この方法は非常に壊れやすく、エラーが発生しやすいようです。
1 日あたりのインデックス内のドキュメントの累積量を取得する方法はありますか?