django haystack實現全文檢索

2021-10-07 09:09:19 字數 4566 閱讀 7863

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...