国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中使用haystack實現django全文檢索搜索引擎功能

2020-02-16 02:10:04
字體:
來源:轉載
供稿:網友

前言

django是python語言的一個web框架,功能強大。配合一些插件可為web網站很方便地添加搜索功能。

搜索引擎使用whoosh,是一個純python實現的全文搜索引擎,小巧簡單。

中文搜索需要進行中文分詞,使用jieba。

直接在django項目中使用whoosh需要關注一些基礎細節問題,而通過haystack這一搜索框架,可以方便地在django中直接添加搜索功能,無需關注索引建立、搜索解析等細節問題。

haystack支持多種搜索引擎,不僅僅是whoosh,使用solr、elastic search等搜索,也可通過haystack,而且直接切換引擎即可,甚至無需修改搜索代碼。

配置搜索

1.安裝相關包

pip install django-haystackpip install whooshpip install jieba

2.配置django的settings

修改settings.py文件,添加haystack應用:

INSTALLED_APPS = (  ...  'haystack', #將haystack放在最后)

在settings中追加haystack的相關配置:

HAYSTACK_CONNECTIONS = {  'default': {    'ENGINE': 'haystack.backends.whoosh_cn_backend.WhooshEngine',    'PATH': os.path.join(BASE_DIR, 'whoosh_index'),  }}# 添加此項,當數據庫改變時,會自動更新索引,非常方便HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

3.添加url

在整個項目的urls.py中,配置搜索功能的url路徑:

urlpatterns = [  ...  url(r'^search/', include('haystack.urls')),]

4.在應用目錄下,添加一個索引

在子應用的目錄下,創建一個名為 search_indexes.py 的文件。

from haystack import indexes# 修改此處,為你自己的modelfrom models import GoodsInfo# 修改此處,類名為模型類的名稱+Index,比如模型類為GoodsInfo,則這里類名為GoodsInfoIndexclass GoodsInfoIndex(indexes.SearchIndex, indexes.Indexable):  text = indexes.CharField(document=True, use_template=True)  def get_model(self):    # 修改此處,為你自己的model    return GoodsInfo  def index_queryset(self, using=None):    return self.get_model().objects.all()

說明:

1)修改上文中三處注釋即可

2)此文件指定如何通過已有數據來建立索引。get_model處,直接將django中的model放過來,便可以直接完成索引啦,無需關注數據庫讀取、索引建立等細節。

3)text=indexes.CharField一句,指定了將模型類中的哪些字段建立索引,而use_template=True說明后續我們還要指定一個模板文件,告知具體是哪些字段

5.指定索引模板文件

在項目的“templates/search/indexes/應用名稱/”下創建“模型類名稱_text.txt”文件。

例如,上面的模型類名稱為GoodsInfo,則創建goodsinfo_text.txt(全小寫即可),此文件指定將模型中的哪些字段建立索引,寫入如下內容:(只修改中文,不要改掉object)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 科技| 枝江市| 曲松县| 潮州市| 永新县| 高清| 寿光市| 大邑县| 察雅县| 元阳县| 吴川市| 隆安县| 年辖:市辖区| 页游| 楚雄市| 梅河口市| 新兴县| 台中市| 德庆县| 邯郸市| 登封市| 扶余县| 金秀| 巩义市| 乐都县| 吴桥县| 闸北区| 上虞市| 登封市| 汉川市| 扶风县| 北辰区| 建平县| 大同市| 许昌市| 时尚| 抚顺市| 垦利县| 浦城县| 措勤县| 衡东县|