さまざまな検索アプリケーションにSolrインデックスを使用しています。ほとんどの場合、管理インターフェースの場合と同じように使用します。例えば:
+text:Mr +text:burns +publish_date[2012-09-10T00:00:00Z TO 2012-10-10T00:00:00Z]
これは正常に機能します。
私の問題は、1つのアプリで(solrを使用せずに)インデックスに対して直接複雑なluceneクエリを使用し、これらのクエリで日付フィールドを検索する方法を見つけることができないことです。
schema.xmlの場合:
<field name="publish_date" type="date" indexed="true" stored="true"/>
solrは日付をミリ秒単位のUNIX時間として保存しているようですが、インデックスからフィールドをプルすると、1336867200000のようになります。
luceneでは、考えられるすべてのクエリを試しました。
TermRangeQuery nq1 = new TermRangeQuery("publish_date", "1299628800000", "1336867200000", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date", "1299628800", "1336867200", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date", "2012-09-10T00:00:00Z", "2012-10-10T00:00:00Z", true, true);
TermRangeQuery nq1 = new TermRangeQuery("publish_date", "20120910", "20121010", true, true);
NumericRangeQuery nq1 = NumericRangeQuery.newLongRange("publish_date", 1299628800, 1336867200, true, true);
そして他のいくつかの試み...
結果を返した唯一のクエリは
TermRangeQuery nq1 = new TermRangeQuery("publish_date", null, null, true, true);
もちろん、これは「オープンエンドポイント」を使用したクエリですが、フィールドが文字列としてインデックス付けされているように見えます(同じことがint-rangeまたはlong-rangeでは機能しませんでした)。
苛立たしいことは、それが明らかに可能であるということです。私は、dosesolrがその日付範囲をどのように実行するかを理解する必要があります。
この検索を実行する方法を知っている人はいますか?
どんな助けでもいただければ幸いです。