32 Django高階 全文檢索

2021-09-26 14:46:17 字數 3307 閱讀 5611

下面來講解操作步驟:

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 全文檢索框架 全文檢索框架的配置...