J'ai un document comme celui-ci:
<doc>
champ Requête en multivalué 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>
Je plage de dates et que vous souhaitez trouver une paire de StartDate et EndDate qui couvrent la gamme. Par exemple, la première paire de startDate et de EndDate (2012-08-18 à 2012-09-29) renvoie true si la plage d'entrée (x, y) est 2012-08-18 < x et 2012-09-29 > y.
J'ai écrit une requête comme ceci:
StartDate: [1995-12-31T23: 59: 59.999Z À 2012-08-18T00: 00: 00.000Z] ET EndDate: [2012-09-29T00: 00 : 00.000Z TO 2099-01-01T00: 00: 00.000Z]
mais le problème est SOLR rechercher toutes les dates de correspondance dans l'ensemble de 14 éléments ci-dessus, alors que je veux juste les comparer un par un (1 avec 1, 2 avec 2 ...).
S'il vous plaît aidez-moi à me dire comment faire cela. Merci beaucoup.
Pour votre première solution. Je pense à utiliser la requête 'fonction' de Solr. Tant que nous pouvons parcourir les deux tableaux, nous pouvons trouver le moyen de le faire. Juste ma pensée. Je suis très nouveau à Solr. Merci, en attente d'autres réponses. – dtnam
Je doute que l'ordre soit garanti pour les champs à valeurs multiples; Je n'ai pas lu la source pour vérifier cela, mais il est certainement possible que vous vous retrouviez avec '[start2, start1, start3]' à la place. – beerbajay
L'autre façon que je peux voir est de dénormaliser (start1, end1) en une valeur que vous pouvez rechercher. Cependant, cela pourrait ne pas être si facile/possible du tout – Fuxi