0

私の目標は、過去 1 年間の各月のドキュメント数を取得することです。Solr 1.4 に対して使用しているファセット クエリを次に示します。

q=*:*
rows=0
facet=on
facet.date=myDateField
facet.date.start=NOW-11MONTH/MONTH
facet.date.end=NOW+1MONTH/MONTH
facet.date.gap=+1MONTH

このクエリが生成する範囲は です2013-01-01T00:00:00Z to 2013-02-01T00:00:00Z。これは上限を含みます。つまりT00:00:00Z、毎月 1 日に 2 つの異なる範囲でカウントされます。

Solr 3.1 は、私の問題を解決するパラメーターを導入していfacet.date.includeますが、今すぐアップグレードすることはオプションではありません。同じ機能を実現するための回避策はありますか? どちらが近いか試しfacet.date.gap=+1MONTH-1SECONDましたが、十分に近くありませんでした。終了日が正しくない場合、次のようなものが生成されます。

2012-09-01T00:00:00Z
2012-09-30T23:59:59Z
2012-10-30T23:59:58Z
2012-11-30T23:59:57Z
2012-12-30T23:59:56Z
2013-01-30T23:59:55Z
2013-02-28T23:59:54Z
2013-03-28T23:59:53Z
2013-04-28T23:59:52Z
4

1 に答える 1

0

あなたが求めていることは、ファセット範囲の代わりにファセット クエリで実行できます。次のようなことを試してください:

facet.query=myDateField:[NOW-11MONTH/MONTH TO NOW-10MONTH/MONTH] 
facet.query=myDateField:[NOW-10MONTH/MONTH TO NOW-9MONTH/MONTH] 
facet.query=myDateField:[NOW-9MONTH/MONTH TO NOW-8MONTH/MONTH] ... 

等々。

これで、任意の 1 つのファセットを完全に制御できるようになったため、必要に応じて最後のファセットで -1DAY を実行できます。日付計算構文のリファレンスをご覧ください: http://lucene.apache.org/solr/4_4_0/solr-core/org/apache/solr/util/DateMathParser.html

于 2013-08-19T20:02:39.463 に答える