Bagaimanakah Saya Boleh Mencapai Pengisihan Tidak Peka Huruf dalam Cloud Firestore?

Linda Hamilton
Lepaskan: 2024-10-22 08:52:02
asal
960 orang telah melayarinya

How Can I Achieve Case-Insensitive Sorting in Cloud Firestore?

Isih Tidak Sensitif Awan Firestore dengan Pertanyaan

Cloud Firestore memerlukan kedua-dua pertanyaan dan penapis untuk peka huruf besar-besaran, menjadikan pembangun mencari pendekatan alternatif untuk pengisihan tidak sensitif huruf besar-besaran . Untuk menangani perkara ini, teknik yang popular melibatkan mencipta medan pendua sambil mengekalkan salinan data yang tidak sensitif huruf besar dan kecil.

Mencipta Medan Tidak Peka Huruf Besar

Dengan mencipta medan sekunder dengan versi huruf kecil data asal, pengisihan dan penapisan boleh dilakukan berdasarkan medan tidak peka huruf besar-kecil ini. Sebagai contoh, medan yang dipanggil myData boleh mempunyai medan myData_insensitive yang sepadan dengan semua nilai ditukar kepada huruf kecil.

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

Lipatan Huruf untuk Unikod

Lipatan huruf besar disyorkan untuk sokongan Unikod, kerana ia mengendalikan normalisasi aksara yang kompleks dan pengisihan tidak peka huruf besar-kecil. Coretan JavaScript berikut memberikan contoh cara melaksanakan lipatan huruf besar-kecil:

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

Kod Contoh

Coretan kod ini menunjukkan cara membuat dokumen Firestore dengan medan tidak sensitif huruf besar-besaran:

<code class="javascript">var raw_document = {
  name: "Los Angeles",
  state: "CA",
  country: "USA",
  structure: 'Waſſerſchloß',
  message: 'quıt quit' // Notice the different i's
};

var field_options = {
  name: 'case_fold',
  country: 'case_fold',
  structure: 'case_fold',
  message: 'case_fold'
}

var firestore_document = caseFoldDoc(raw_document, field_options);

db.collection("cities").doc("LA").set(firestore_document).then(function() {
  console.log("Document successfully written!");
}).catch(function(error) {
  console.error("Error writing document: ", error);
});</code>
Salin selepas log masuk

Ini akan menghasilkan dokumen dengan kedua-dua medan sensitif huruf besar dan kecil:

<code class="javascript">{ 
 "name": "Los Angeles", 
 "state": "CA", 
 "country": "USA", 
 "structure": "Waſſerſchloß", 
 "message": "quıt quit", 
 "name_casefold": "los angeles", 
 "country_casefold": "usa", 
 "structure_casefold": "wasserschloss", 
 "message_casefold": "quit quit"
}</code>
Salin selepas log masuk

Ingat, walaupun teknik ini menawarkan penyelesaian untuk pengisihan tidak sensitif huruf besar-besaran dalam Firestore, ia memerlukan ruang storan tambahan dan menanggung kos pemprosesan untuk setiap kemas kini dokumen. Seperti mana-mana penyelesaian, pertimbangkan pertukaran dan pilih pendekatan yang paling sesuai dengan keperluan aplikasi anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Pengisihan Tidak Peka Huruf dalam 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