下面來講解操作步驟:
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
defindex_queryset
(self, using=
none):
return self.get_model(
).objects.
all(
)
5.在目錄「templates/search/indexes/應用名稱/」下建立「模型類名稱_text.txt」檔案
#goodsinfo_text.txt,這裡列出了要對哪些列的內容進行檢索}}
}
6.在目錄「templates/search/」下建立search.html
>
>
>
title
>
head
>
>
>
搜尋結果如下:h3
>
href
="/}/"
>
}a>
/>
>
啥也沒找到p
>
>
href
="?q=}&page=}"
>
>
|href
="?q=}&page=}"
>
>
div>
body
>
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.0if 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
defchineseanalyzer()
: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.在模板中建立搜尋欄
method
='get'
action
="/search/"
target
="_blank"
>
type
="text"
name
="q"
>
type
="submit"
value
="查詢"
>
form
>
全文檢索 Django
全文檢索不同於特定欄位的模糊查詢,使用全文檢索的效率更高,並且能夠對於中文進行分詞處理 haystack django的乙個包,可以方便地對model裡面的內容進行索引 搜尋,設計為支援whoosh,solr,xapian,elasticsearc四種全文檢索引擎後端,屬於一種全文檢索的框架 who...
Django全文檢索
最常見的全文檢索就是我們在資料庫進行的模糊查詢,但是模糊查詢是針對整體的內容的乙個動態匹配過程,在資料量較大的情況下匹配效率極低,常規專案中資料量一般都比較多並且內容繁雜,所以正常的專案搜尋功能中很少使用模糊查詢進行操作 python提供了各種全文檢索的模組,最常見的如haystack模組進行全文檢...
django 實現全文檢索
全文檢索不同於特定欄位的模糊查詢,使用全文檢索的效率再高,並且能夠對於中文進行分詞處理。安裝包 pip install django haystack pip install whoosh pip install jieba修改settings檔案 haystack 全文檢索框架 全文檢索框架的配置...