Django 框架15 全文搜尋

2021-09-29 18:55:16 字數 2802 閱讀 7964

全文檢索

1.全文檢索不同於特定欄位的模糊查詢,使用全文檢索的效率更高,並且能夠對於中文進行分詞處理

2.haystack:django的乙個包,可以方便地對model裡面的內容進行索引、搜尋,設計為支援whoosh,solr,xapian,elasticsearc四種全文檢索引擎後端,屬於一種全文檢索的框架

3.whoosh:純python編寫的全文搜尋引擎,雖然效能比不上sphinx、xapian、elasticsearc等,但是無二進位製包,程式不會莫名其妙的崩潰,對於小型的站點,whoosh已經足夠使用

4.jieba:一款免費的中文分詞包,如果覺得不好用可以使用一些收費產品

操作

1.在虛擬環境中依次安裝包

pip install django-haystack

pip install whoosh

pip install jieba

2.修改settings.py檔案  

新增應用

...'haystack',)

新增搜尋引擎

haystack_connections = 

}#自動生成索引

haystack_signal_processor = 'haystack.signals.realtimesignalprocessor'

3.在專案的urls.py中新增url

urlpatterns = [

...url(r'^search/', include('haystack.urls')),

]

4.在應用目錄下建立search_indexes.py檔案

# coding=utf-8

from haystack import indexes

from models import goodsinfo

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

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

def get_model(self):

return goodsinfo

def index_queryset(self, using=none):

return self.get_model().objects.all()

5.在目錄「templates/search/indexes/應用名稱/」下建立「模型類名稱_text.txt」檔案

#goodsinfo_text.txt,這裡列出了要對哪些列的內容進行檢索}}

}

6.在目錄「templates/search/」下建立search.html

}啥也沒找到

|

7.建立chineseanalyzer.py檔案 

儲存在haystack的安裝資料夾下,路徑如「/home/python/.virtualenvs/django_py2/lib/python2.7/site-packages/haystack/backends」

import jieba

from whoosh.analysis import tokenizer, token

class chinesetokenizer(tokenizer):

def __call__(self, value, positions=false, chars=false,

keeporiginal=false, removestops=true,

start_pos=0, start_char=0, mode='', **kwargs):

t = token(positions, chars, removestops=removestops, mode=mode,

**kwargs)

seglist = jieba.cut(value, cut_all=true)

for w in seglist:

t.original = t.text = w

t.boost = 1.0

if positions:

t.pos = start_pos + value.find(w)

if chars:

t.startchar = start_char + value.find(w)

t.endchar = start_char + value.find(w) + len(w)

yield t

def chineseanalyzer():

return chinesetokenizer()

8.複製whoosh_backend.py檔案,改名為whoosh_cn_backend.py 

注意:複製出來的檔名,末尾會有乙個空格,記得要刪除這個空格

from .chineseanalyzer import chineseanalyzer 

# 查詢

analyzer=stemminganalyzer()

# 改為

analyzer=chineseanalyzer()

9.生成索引 

初始化索引資料

python manage.py rebuild_index
10.在模板中建立搜尋欄

django全文搜尋

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

Django全文搜尋功能

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

Haystack 全文搜尋框架

haystack是django的開源全文搜尋框架 全文檢索不同於特定欄位的模糊查詢,使用全文檢索的效率更高 該框架支援solr,elasticsearch,whoosh,xapian 搜尋引擎它是乙個可插拔的後端 很像django的資料庫層 所以幾乎你所有寫的 都可以在不同搜尋引擎之間便捷切換 pi...