W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
標(biāo)準(zhǔn)數(shù)據(jù)庫操作對于大量文本搜索來說太過簡陋了。雖然上面的示例可以看作是對字符串的操作,但是全文搜索查看的是實際的單詞。依據(jù)所使用的系統(tǒng),可以采用下面的某些方法:
使用搜索軟件有很多選項,最常見的有 Elastic 和 Solr。它們都是基于全文搜索的解決方案。要用它們搜索來自 Django 模型的數(shù)據(jù),你需要一個抽象層,將數(shù)據(jù)(包括對數(shù)據(jù)庫 id 的指針)轉(zhuǎn)換為文本文檔。當(dāng)使用該引擎的某次搜索返回了一份文檔,你可以在數(shù)據(jù)庫中查看它。有很多第三方庫被設(shè)計為處理這種問題。
PostgreSQL 內(nèi)置了其專屬的全文本搜索實現(xiàn)。雖然并不像其它搜索引擎那樣強(qiáng)大,但它的優(yōu)點(diǎn)是內(nèi)置在數(shù)據(jù)庫中,所以它能很方便的與其它關(guān)聯(lián)查詢條件進(jìn)行聯(lián)合查詢,如按分類查詢。
?django.contrib.postgres
? 模塊提供了一些助手函數(shù)來執(zhí)行這些查詢。例如,查詢可能篩選出所有提到了 "cheese" 的博客條目:
>>> Entry.objects.filter(body_text__search='cheese')
[<Entry: Cheese on Toast recipes>, <Entry: Pizza recipes>]
你也可以在聯(lián)合字段或關(guān)聯(lián)模型上進(jìn)行篩選:
>>> Entry.objects.annotate(
... search=SearchVector('blog__tagline', 'body_text'),
... ).filter(search='cheese')
[
<Entry: Cheese on Toast recipes>,
<Entry: Pizza Recipes>,
<Entry: Dairy farming in Argentina>,
]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: