標籤:roc install res end src port mode text get
1.安裝全文檢索索引包
# 全文檢索索引架構pip install django-haystack# 全文檢索索引引擎pip install whoosh# 中文分詞架構pip install jieba
heystack一些配置都是固定寫好的,需要注意下
2.配置全文檢索索引
1.安裝haystack應用
INSTALLED_APPS = ( ... ‘haystack‘,)
2.在settings.py檔案中配置搜尋引擎
# 配置搜尋引擎後端HAYSTACK_CONNECTIONS = { ‘default‘: { # 使用whoosh引擎:提示,如果不需要使用jieba架構實現分詞,就使用whoosh_backend ‘ENGINE‘: ‘haystack.backends.whoosh_cn_backend.WhooshEngine‘, # 索引檔案路徑 ‘PATH‘: os.path.join(BASE_DIR, ‘whoosh_index‘), # 在項目目錄下建立檔案夾 whoosh_index }}# 當添加、修改、刪除資料時,自動產生索引HAYSTACK_SIGNAL_PROCESSOR = ‘haystack.signals.RealtimeSignalProcessor‘
- 3.在要建立索引的表對應的應用下,建立
search_indexes.py
檔案
-
-
定義商品索引類GoodsSKUIndex()
,繼承自indexes.SearchIndex
和indexes.Indexable
from haystack import indexes
from .models import GoodsSKU
class GoodsSKUIndex(indexes.SearchIndex, indexes.Indexable):
# 定義字元類型的屬性,名稱固定為text
# document=True表示建立的索引資料存放區到檔案中
# use_template=True表示通過模板指定表中的欄位,用於查詢
text = indexes.CharField(document=True, use_template=True)
# 針對哪張表進行查詢
def get_model(self):
return GoodsSKU
# 針對哪些行進行查詢
def index_queryset(self, using=None):
return self.get_model().objects.filter(isDelete=False)
- 4.指定要建立索引的欄位
- 5.產生索引檔案
- # 在終端運行, 提示是否要刪除原有資訊, 輸入y
python manage.py rebuild_index
- 搜尋表單處理
- 搜尋地址:
/search/
- 搜尋方法:
get
接收關鍵字:q
- action="/search/" method="get" 文字框的name= "q" 為固定寫法
配置搜尋地址正則
import haystack.urlsurl(r‘^search/‘, include(haystack.urls)),
測試搜尋效果,接收結果
全文檢索索引結果:
- 搜尋出結果後,haystack會把搜尋出的結果傳遞給
templates/search
目錄下的search.html
- 對於
search.html
,我們需要自己建立該html檔案,並定義自己的搜尋結果頁面
傳遞的上下文包括:
- query:搜尋索引鍵
- page:當前頁的page對象
- paginator:分頁paginator對象
- 提示:
settings.py
檔案中設定HAYSTACK_SEARCH_RESULTS_PER_PAGE
- 通過
HAYSTACK_SEARCH_RESULTS_PER_PAGE
可以控制每頁顯示數量
- 每頁顯示一條資料:
HAYSTACK_SEARCH_RESULTS_PER_PAGE = 1
search.html
編寫,類似商品列表頁面
python搜尋引擎和架構