Image du projet 'Socle K-Sup' téléversée
  1. Socle K-Sup
  2. CORE-5104

Configuration de recherche : filtre d'intervalle incomplet

XMLWordImprimable

    • Icon: Bug Bug
    • Résolution: Non résolu
    • Icon: Mineur Mineur
    • master
    • 6.06.22, 6.07.29, 6.08.00
    • Search
    • Aucune

      Bonjour,

      Le filtre d'intervalle com.kosmos.search.query.configuration.SearchFilterRangeConfiguration proposé par K-Sup est incomplet pour gérer notamment les intervalles de dates :

      • Le format est en dur dans le builder associé, il n'est pas possible d'avoir une granularité plus fine que JJ/MM/AAAA (par exemple, mettre un filtre à l'heure ou minute).
      • Le time zone n'est pas positionné dans le builder de requête, et comme les dates dans Elasticsearch sont en UTC (alors que les dates de filtre sont en général dans la zone Europe/Paris), cela fait un décalage d'1h.
      • D'autre part, la configuration de "Range" (intervalle) n'est pas vraiment un intervalle, mais un positionnement d'un borne min ou max (uniquement). En pratique, sur un champ monovalué, ça fonctionne bien, mais sur du multi-valué de date, cela pose problème :

      Prenons l'exemple de deux objets dans l'index :

      { id:1, dateDebut : [07/02/2020] }

      et

      { id:2, dateDebut : [01/02/2020,01/03/2020] }

      Si on fait deux configurations de "Range" sur le même champ plugin.dateDebut, on se retrouve, en imaginant demander éléments les dates du 05/02/2020 au 15/02/2020 à faire des sous-requêtes du type :

      range : {
       dateDebut : {
        from:05/02/2020,
        to:null
        }
       }
      }
      et
      range : {
       dateDebut : {
        from:null,
        to:15/02/2020
        }
       }
      }
      

      Sur du mono-valué, la requête va ramener l'objet d'ID 1 (car les 2 sous-requêtes correspondent bien à l'intervalle demandé)
      Sur du multi-valué, la deuxième valeur va matcher la première requête (01/03/2020 > 05/02/2020) et la première valeur va matcher la deuxième requête (01/02/2020 < 15/02/2020). L'objet d'ID 2 va également être remonté (alors qu'on ne veut pas fonctionnellement le remonter).

            Non attribuée Non attribuée
            cpoisnel Charles-edouard POISNEL
            Votes:
            0 Voter pour ce ticket
            Gérer les observateurs:
            3 Démarre l'observation de ce ticket

              Création:
              Mise à jour: