web-dev-qa-db-fra.com

Comment filtrer la requête dans Solr par date?

Dans mon SOLR, il y a un champ de date (publication_date) et les valeurs sont dans ce format "2012-09-26T10: 08: 09.123Z"

Comment puis-je effectuer une recherche par simple saisie comme "2012-09-10" au lieu du format de date ISO complet.

Est-ce possible dans SOLR? J'ai essayé avec

fq=[2012-09-24%20TO%20NOW]

Il devrait revenir en filtrant les résultats supérieurs à la date de publication 2012-09-24 et inférieurs à MAINTENANT.

Mais il renvoie des données avec la date de publication avec 2012-09-23, comme ci-dessous

<float name="score">2.8183863</float>
<str name="name">Local Team Inspires Obama</str>
<date name="published_date">2012-09-23T07:44:53.123Z</date>

Suis-je en train de manquer quelque chose?

merci d'avance.

22
user1289853

Si vous souhaitez obtenir les publications de la semaine dernière, vous pouvez faire quelque chose comme:

&fq=published_date:[NOW-7DAY/DAY TO NOW]

Mais si vous voulez une date concrète, vous devez le faire au format de date SOLR:

&fq=published_date:[2013-07-17T00:00:00Z TO NOW]

J'espère que ça aide

42
Khriz

La forme la plus simple de la date Solr est le mot-clé 'MAINTENANT' qui fait référence à la date et à l'heure actuelles. Il est sensible à la casse dans Solr, mais l'analyseur de requête Lucid le permettra dans tous les cas. 'NOW' peut être utilisé si aucune date explicite ou date mathématique n'est spécifiée, ou il peut être utilisé si la date mathématique est spécifiée sans date explicite.

Une date explicite est écrite dans Solr en utilisant un format basé sur ISO 8601, qui consiste en une chaîne de la forme aaaa-mm-jjThh: mm: ss.mmmZ, où 'aaaa' est l'année à quatre chiffres, le premier 'mm 'est le mois à deux chiffres,' dd 'est le jour à deux chiffres,' T 'est la lettre littérale obligatoire' T 'pour indiquer que l'heure suit,' hh 'est les heures à deux chiffres (' 00 'à' 23 '), le deuxième' mm 'est les minutes à deux chiffres (' 00 'à' 59 '),' ss 'est les secondes à deux chiffres (' 00 'à' 59 '), éventuellement' .mmm 'est les millisecondes à trois chiffres précédées d'un point et "Z" est la lettre littérale obligatoire "Z" pour indiquer que l'heure est UTC ("Zulu"). La portion en millisecondes, y compris sa période de début, est facultative. Les zéros de fin ne sont pas requis pour les millisecondes.

For example:

    2008-01-01T00:00:00Z

    2008-01-01T00:00:00

    2008-01-01T00:00 same as [2008-01-01T00:00:00Z TO 2008-01-01T00:00:59Z]

    2008-01-01T00: same as [2008-01-01T00:00:00Z TO 2008-01-01T00:59:59Z]

    2008-01-01T same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z]

    2008-01-01 same as [2008-01-01T00:00:00Z TO 2008-01-01T23:59:59Z]

    2008-01 same as [2008-01-01T00:00:00Z TO 2008-01-31T23:59:59Z]

    2008 same as [2008-01-01T00:00:00Z TO 2008-12-31T23:59:59Z]

Crédit à Solr Documentation

12
Ahmed Salem