のフィールドを多値:私は
<doc>
クエリは、私はこのような文書いるSolrの
<arr name="StartDate">
<date>2012-08-18T17:00:00Z</date>
<date>2012-06-28T17:00:00Z</date>
<date>2013-02-28T17:00:00Z</date>
<date>2012-04-16T17:00:00Z</date>
<date>2012-08-06T17:00:00Z</date>
<date>2012-05-18T17:00:00Z</date>
<date>2012-07-04T17:00:00Z</date>
</arr>
<arr name="EndDate">
<date>2012-09-29T17:00:00Z</date>
<date>2012-06-29T17:00:00Z</date>
<date>2013-04-16T17:00:00Z</date>
<date>2012-05-07T17:00:00Z</date>
<date>2012-08-15T17:00:00Z</date>
<date>2012-06-22T17:00:00Z</date>
<date>2012-08-01T17:00:00Z</date>
</arr>
</doc>
を日付範囲を持ち、範囲をカバー開始日と終了日のペアを見つけたいです。たとえば、startDateとEndDateの最初のペア(2012-08-18 TO 2012-09-29)は、入力範囲(x、y)が2012-08-18 < xと2012-09-29 >の場合にtrueを返します。終了日:[2012-09-29T00:00 [:00:00.000Z 2012-08-18T00 TO 59.999Z:1995-12-31T23:59]
開始日:
しかし、問題はSOLR検索です。上記の14項目のセットのすべての一致日は、1つ1つ(1と1,2 2と...)。
どうすればいいのか教えてください。どうもありがとう。
あなたの最初の解決策です。私はSolrの '関数'クエリの使用について考えています。 2つの配列を繰り返し処理できる限り、それを行う方法を見つけることができます。ちょうど私の考え。私はSolrにとってとても新しいです。ありがとう、他の答えを待っている。 – dtnam
多値フィールドの順序が保証されているかどうかは疑問です。私はこれをチェックするソースを読んでいませんが、代わりに '[start2、start1、start3]'で終わる可能性は確かです。 – beerbajay
私が見ることができる他の方法は、あなたが検索できる1つの値に(start1、end1)を非正規化することです。しかし、これは容易ではない/全く可能ではないかもしれません – Fuxi