W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在上面的例子中,我們可以確認(rèn)大小寫不敏感的查詢會(huì)更實(shí)用一些。當(dāng)處理英文以外的名字時(shí),可以用無重音比較來優(yōu)化:
>>> Author.objects.filter(name__unaccent__icontains='Helen')
[<Author: Helen Mirren>, <Author: Helena Bonham Carter>, <Author: Hélène Joy>]
這展開了另一個(gè)關(guān)于通過名字的不同拼寫進(jìn)行比較的討論。但這種比較是不對(duì)稱的 —— 篩選 ?Helen
?能拿到 ?Helena
?或 ?Hélène
?,但反著來卻不行。還有一個(gè)選項(xiàng)允許使用 ?trigram_similar
?比較,這回比較字母的序列。
例如:
>>> Author.objects.filter(name__unaccent__lower__trigram_similar='Hélène')
[<Author: Helen Mirren>, <Author: Hélène Joy>]
現(xiàn)在還有一個(gè)問題 —— 名字 "Helena Bonham Carter" 有點(diǎn)太長(zhǎng)了,以至于沒有顯示。三元搜索綜合考慮了三種字母的所有組合形式,并同時(shí)再查詢和源字符串中比較了出現(xiàn)的次數(shù)。對(duì)于長(zhǎng)名字,源字符串中包含了更多的組合方式,所以其不再被認(rèn)為是一種近似匹配。
要基于你提供的特定數(shù)據(jù)集合選擇一個(gè)合適的比較函數(shù),例如依據(jù)使用的語言和待搜索的文本。我們見過的所有例子都是關(guān)于短字符串的,這使得用戶可以輸入與源數(shù)據(jù)關(guān)聯(lián)較大(根據(jù)不同的定義)的內(nèi)容。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: