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 HurufDocA: -> 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>
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!