Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Melaksanakan Pengisihan Case-Insensitive dengan Pertanyaan Cloud Firestore?

Bagaimana untuk Melaksanakan Pengisihan Case-Insensitive dengan Pertanyaan Cloud Firestore?

Linda Hamilton
Linda Hamiltonasal
2024-10-22 08:54:03632semak imbas

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

Isih Tidak Peka Huruf Firestore dengan Pertanyaan Cloud Firestore

Dalam Cloud Firestore, pengisihan data sememangnya sensitif huruf. Menggunakan kaedah OrderBy mengisih data dalam susunan menaik atau menurun berdasarkan medan yang ditentukan. Walau bagaimanapun, jika data mengandungi variasi dalam kes, seperti 'AAA' dan 'aaa', pesanan yang dikembalikan mungkin tidak seperti yang diingini.

Isu dengan Pengisihan Sensitif Huruf

Secara lalai, Firestore mengisih data dalam susunan berikut:

AAA
BBB
aaa
bbb

Walau bagaimanapun, jangkaan mungkin:

AAA
aaa
BBB
bbb

Penyelesaian: Menyimpan Data Tidak Peka Huruf

Pertimbangkan medan yang dipanggil myData yang menyimpan nilai 'AAA' dan 'aaa'. Untuk membuat pengisihan tidak peka huruf besar-besaran, anda perlu menyimpan medan kedua yang dipanggil myData_insensitive dengan versi data tidak sensitif huruf besar-kecil:

Mencari dan Memesan oleh Data Tidak Peka Huruf
DocA:
-> myData = 'AAA'
-> myData_insensitive = 'AAA'

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

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

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

Kini anda boleh membuat pertanyaan dan memesan data melalui myData_insensitive, yang akan memberikan hasil pengisihan tidak sensitif huruf besar dan kecil yang diingini.

Unicode dan Pertimbangan Setempat

Adalah penting untuk ambil perhatian bahawa normalisasi kes untuk Unicode adalah lebih kompleks daripada hanya menukar kepada huruf kecil atau huruf besar. Bahasa mungkin mempunyai peraturan penyusunan yang berbeza, yang mempengaruhi cara aksara diisih.

Menggunakan Lipatan Kes untuk Penormalan Kes

Untuk menangani kerumitan ini, anda boleh melaksanakan penormalan kes menggunakan lipatan kes , yang memastikan bahawa aksara dengan bentuk huruf besar yang berbeza (cth., 'a', 'A') dianggap setara. Pelayar moden menyokong fungsi asli untuk ini.

Berikut ialah contoh:

Contoh ini menukar rentetan s kepada versi ternormal sepenuhnya, mengabaikan perbezaan kes.

<code class="javascript">caseFoldNormalize = function (s) {
  return s.normalize('NFKC').toLowerCase().toUpperCase().toLowerCase();
};</code>
Oleh menggunakan pengisihan dan penormalan yang tidak peka huruf besar-besaran, anda boleh mengisih data dengan berkesan dalam Cloud Firestore dalam cara yang tidak peka huruf besar-besaran, memastikan ketekalan dalam susunan data tanpa mengira variasi kes.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengisihan Case-Insensitive dengan Pertanyaan Cloud Firestore?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn