Maison  >  Article  >  interface Web  >  Comment implémenter un tri insensible à la casse avec la requête de Cloud Firestore ?

Comment implémenter un tri insensible à la casse avec la requête de Cloud Firestore ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-22 08:54:03547parcourir

How to Implement Case-Insensitive Sorting with Cloud Firestore's Query?

Tri Firestore insensible à la casse avec la requête de Cloud Firestore

Dans Cloud Firestore, le tri des données est intrinsèquement sensible à la casse. L'utilisation de la méthode OrderBy trie les données par ordre croissant ou décroissant en fonction du champ spécifié. Toutefois, si les données contiennent des variations de casse, telles que « AAA » et « aaa », l'ordre renvoyé peut ne pas être celui souhaité.

Le problème du tri sensible à la casse

Par défaut, Firestore trie les données dans l'ordre suivant :

AAA
BBB
aaa
bbb

Cependant, l'attente pourrait être :

AAA
aaa
BBB
bbb

Solution : stockage des données insensibles à la casse

Étant donné que Firestore ne fournit pas d'indicateur intégré pour ignorer la casse lors du tri, la seule façon d'obtenir un tri insensible à la casse est de stocker un champ supplémentaire contenant une version des données insensible à la casse.

Considérons un champ appelé myData qui stocke les valeurs « AAA » et « aaa ». Pour rendre le tri insensible à la casse, vous devez stocker un deuxième champ appelé myData_insensitive avec la version des données insensible à la casse :

DocA:
-> myData = 'AAA'
-> myData_insensitive = 'AAA'

DocB:
-> myData = 'aaa'
-> myData_insensitive = 'AAA'

DocC:
-> myData = 'BBB'
-> myData_insensitive = 'BBB'

DocD:
-> myData = 'bbb'
-> myData_insensitive = 'BBB'

Requête et classement par données insensibles à la casse

Vous pouvez désormais interroger et trier les données par myData_insensitive, ce qui fournira le résultat de tri souhaité, insensible à la casse.

Unicode et considérations locales

C'est important Il convient de noter que la normalisation de la casse pour Unicode est plus complexe que la simple conversion en minuscules ou en majuscules. Les langues peuvent avoir des règles de classement différentes, affectant la façon dont les caractères sont triés.

Utiliser le pliage de casse pour la normalisation de casse

Pour résoudre ces complexités, vous pouvez mettre en œuvre la normalisation de casse à l'aide du pliage de casse , qui garantit que les caractères avec des formes de casse différentes (par exemple, « a », « A ») sont traités comme équivalents. Les navigateurs modernes prennent en charge les fonctions natives pour cela.

Voici un exemple :

<code class="javascript">caseFoldNormalize = function (s) {
  return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase();
};</code>

Cet exemple convertit la chaîne s en version entièrement normalisée, en ignorant les différences de casse.

Par Grâce au tri et à la normalisation insensibles à la casse, vous pouvez trier efficacement les données dans Cloud Firestore sans tenir compte de la casse, garantissant ainsi la cohérence de l'ordre des données quelles que soient les variations de casse.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn