搜尋可以使用最原始的like的方式進行搜尋。當然這種搜尋方式對於些小的資料是非常合適的。但是隨著資料越來越大。這時候我們就需要使用搜尋引擎了。搜尋引擎會將所有要搜尋的資料使用演算法做個素引,以後搜尋的時候就只需要根據這個索引腳找到相應的資料。搜尋引擎做索引的過程會比較慢,但是一旦索引建立完成,那麼以後再搜尋的時候就會很快了。
這個外掛程式是專門始django 提供搜尋功能的。django-haystack 提供了乙個搜尋的介面,底層可以根據自己的需求更換搜尋引擎。他
其實有點類似於django 中的orm外掛程式,提供了乙個運算元據庫的介面,但是底層具體使用哪個資料庫是可以自己設定的。安裝方式非常簡單,通過pip install djange-haystack即可安裝。
搜尋引擎:
django-haystack支援的搜尋引擎有solar、elasticsearch 、whoosh 、xapian 等。whoosh 是基於純python 的搜尋引擎,檢索速度快,整合方便。這裡我們就選擇whoosh來作為haystack 的搜尋引擎。安裝方式同樣也是通過pip安裝的: pip install whoosh
(1)在專案中安裝 djando-haystack
'haystack',
(2)設定搜尋引擎
在settings.py中新增以下配置
haystack_connections =
}
(3)建立索引類
from haystack import indexes
from .models import news
class newsindex(indexes.searchindex, indexes.indexable):
text = indexes.charfield(document=true, use_template=true)
def get_model(self):
return news
def index_queryset(self, using=none):
return self.get_model().objects.all()
(4)新增url對映在主urls.py中
urlpatterns = [
path('search/', include('haystack.urls')),
(5)新增模板
在templates資料夾下建立一下目錄:
然後再news_text.txt中新增需要被索引的字段:}}
接著再templates資料夾下建立search.html模板檔案,haystack會自動在templates資料夾下尋找這個模板檔案進行渲染,並且會給這個模板檔案傳入 page, paginator, query等引數。其中page和paginator分別是django內建的page類和paginator類的物件,query是查詢的關鍵字,我們可以通過page.object_list獲取到result物件,再通過result.object 獲取到queryset物件
(6)建立索引
執行python manage.py rebuild_index
在site-packages資料夾下 找到whoosh_backend.py檔案, 將該檔案內容全部複製
再將第186行的:schema_fields[field_class.index_fieldname] = text(stored=true, analyzer=stemminganalyzer(), field_boost=field_class.boost, sortable=true)
修改為:schema_fields[field_class.index_fieldname] = text(stored=true, analyzer=chineseanalyzer(), field_boost=field_class.boost, sortable=true)
settings.py檔案中新增:
haystack_connections =
}#增刪改查操作後自動更新索引
haystack_signal_processor = 'haystack.signals.realtimesignalprocessor'
django haystack實現全文檢索
haystack配置使用 前後端分離 索引檔案生成 替換成jieba分詞 索引檔案使用 1.haystack是django的開源搜尋框架,該框架支援solr,elasticsearch,whoosh,xapian 搜尋引擎,不用更 改 直接切換引擎,減少 量。2.搜尋引擎使用whoosh,這是乙個由...
django haystack外掛程式基本使用操作流程
搜尋可以使用最原始的模糊匹配的like方式進行搜尋。當然這種搜尋方式對於一些小量的資料是非常合適的。但是隨著資料量越來越大。這時候我們就需要使用搜尋引擎了。搜尋引擎會將所有需要搜尋的資料使用演算法做乙個索引,以後搜尋的時候就只需要根據這個索引即可找到相應的資料。搜尋引擎做索引的過程會比較慢,甚至占用...
Django haystack實現全文搜尋
原文 project project settings.py blog models.py 此models.py的內容假設如下 from django.db import models from django.contrib.auth.models import user class note mo...