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

Linda Hamilton
Lepaskan: 2024-10-22 08:54:03
asal
543 orang telah melayarinya

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
Salin selepas log masuk

Walau bagaimanapun, jangkaan mungkin:

AAA
aaa
BBB
bbb
Salin selepas log masuk

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'
Salin selepas log masuk

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>
Salin selepas log masuk
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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!