django全文搜尋

2021-09-16 19:52:57 字數 1901 閱讀 6188

麻雀雖小,搜尋引擎還是不能少的,要不然每次都得去資料庫匹配,django通過haystack搜尋框架可以很容易實現乙個搜尋功能的,whoosh採用的python編寫,效能一般但足夠用,這裡就用這個,開始部署

先安裝

pip install whoosh django-haystack jieba

# whoosh==2.7.4 django-haystack==2.8.1 jieba==0.39 這是我安裝的版本,jieba是提供中文分詞功能的,whoosh預設沒有對中文適配

用jieba自己製作乙個中文分詞引擎

# 從你haystack安裝目錄的backends下拷貝乙份whoosh_backend.py 到你專案目錄下,這裡我放入utils資料夾下並改了個名字,

# 不在原目錄下直接修改是為了遷移時又要再一次修改

cp ~/.pyenv/versions/dweb/lib/python3.6/site-packages/haystack/backends/whoosh_backend.py utils/whoosh_cn_backend.py

並修改如下內容

# 匯入中文分析模組

from jieba.analyse import chineseanalyzer

# 修改預設的analyzer,在160-170行附近

schema_fields[field_class.index_fieldname] = text(stored=true, analyzer=chineseanalyzer(), field_boost=field_class.boost, sortable=true)

別忘了urls裡配置url路徑

path('search/', include('haystack.urls')),
可以開始寫索引了

在你需要搜尋的應用目錄下,新建search_index.py,注意名字不可更改,內容為

from haystack import indexes

from .models import articles # 你需要搜尋的表

class articlesindex(indexes.searchindex, indexes.indexable):

'''# 類名沒要求'''

# use_templates指定根據那些欄位建裡索引檔案,把說明放在乙個檔案中

text = indexes.charfield(document=true, use_template=true)

def get_model(self):

# 返回模型類

return articles

def index_queryset(self, using=none):

return self.get_model().objects.filter(is_secret=false)

在模板目錄下新建search/index/blog/articles_text.txt和search/search.html檔案,

blog為應用名,articles為模型類名,*.txt檔案定義你需要根據哪些字段建立索引,內容如下

# 指定根據表中的哪些資料建裡索引}}

}}

search.html為你搜尋結果展示頁面

}的搜尋結果:}

還沒有內容喲

當前頁碼:}/}

首頁腳頁

目錄結構

原部落格

Django全文搜尋功能

1.使用全文搜尋框架django haystack 2.使用搜尋引擎whoosh 3.安裝 pip install django haystack pip install whoosh 4.配置 settings.py中 全文檢索框架配置 haystack connections 當新增,修改,刪除...

Django搜尋工具 全文檢索

pip install django haystack pip install whoosh pip install jieba haystack coding utf 8 haystack connections 當新增 修改 刪除資料時,自動生成索引 haystack signal proces...

Django 框架15 全文搜尋

全文檢索 1.全文檢索不同於特定欄位的模糊查詢,使用全文檢索的效率更高,並且能夠對於中文進行分詞處理 2.haystack django的乙個包,可以方便地對model裡面的內容進行索引 搜尋,設計為支援whoosh,solr,xapian,elasticsearc四種全文檢索引擎後端,屬於一種全文...