haystack配置使用(前後端分離)
索引檔案生成
替換成jieba分詞
索引檔案使用
1. haystack是django的開源搜尋框架,該框架支援solr,elasticsearch,whoosh, *xapian*搜尋引擎,不用更
改**,直接切換引擎,減少**量。
2. 搜尋引擎使用whoosh,這是乙個由純python實現的全文搜尋引擎,
沒有二進位制檔案等,比較小巧,配置比較簡單,當然效能自然略低。
3. 中文分詞jieba,由於whoosh自帶的是英文分詞,
對中文的分詞支援不是太好,故用jieba替換whoosh的分詞元件。
很多的搜尋引擎對中的支援不友好,jieba作為乙個中文分詞器就是加強對中文的檢索功能
1. python的全文搜尋庫,whoosh是索引文字及搜尋文字的類和函式庫
2. whoosh 自帶的是英文分詞,對中文分詞支援不太好,使用 jieba 替換 whoosh 的分詞元件。
pip3 install django-haystack
pip3 install whoosh
pip3 install jieba
''''[
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# haystack要放在應用的上面
'haystack',]''
'配置haystack '
''# 全文檢索框架配置
haystack_connections =
}# 新增此項,當資料庫改變時,會自動更新索引,非常方便
haystack_signal_processor =
'haystack.signals.realtimesignalprocessor'
from django.db import models
# create your models here.
class userinfo(models.model):
name = models.charfield(max_length=254)
age = models.integerfield(
)class articlepost(models.model):
author = models.foreignkey(userinfo,on_delete=models.cascade)
title = models.charfield(max_length=200)
desc = models.slugfield(max_length=500)
body = models.textfield(
)
from haystack import indexes
from .models import articlepost
# 修改此處,類名為模型類的名稱+index,比如模型類為goodsinfo,則這裡類名為goodsinfoindex(其實可以隨便寫)
class articlepostindex(indexes.searchindex, indexes.indexable):
# text為索引字段
# document = true,這代表haystack和搜尋引擎將使用此字段的內容作為索引進行檢索
# use_template=true 指定根據表中的那些字段建立索引檔案的說明放在乙個檔案中
text = indexes.charfield(document=true, use_template=true)
# 對那張表進行查詢
def get_model(self): # 過載get_model方法,必須要有!
# 返回這個model
return articlepost
# 建立索引的資料
def index_queryset(self, using=none):
# 這個方法返回什麼內容,最終就會對那些方法建立索引,這裡是對所有字段建立索引
return self.get_model(
).objects.all(
)
}}
}
python manage.py rebuild_index # 建立索引檔案
''
'1.複製原始碼中檔案並改名 '
''將 /library/frameworks/python.framework/versions/3.6/lib/python3.6/
site-packages/haystack/backends/whoosh_backend.py檔案複製到專案中
'''2.修改原始碼中檔案'
''# 在全域性引入的最後一行加入jieba分詞器
from jieba.analyse import chineseanalyzer
# 修改為中文分詞法
查詢analyzer=stemminganalyzer()改為
Django haystack實現全文搜尋
搜尋可以使用最原始的like的方式進行搜尋。當然這種搜尋方式對於些小的資料是非常合適的。但是隨著資料越來越大。這時候我們就需要使用搜尋引擎了。搜尋引擎會將所有要搜尋的資料使用演算法做個素引,以後搜尋的時候就只需要根據這個索引腳找到相應的資料。搜尋引擎做索引的過程會比較慢,但是一旦索引建立完成,那麼以...
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...