PS: 我的檢索是在文章模塊下 forum/article
第一步:先安裝需要的包:
pip install django-haystackpip install whooshpip install jieba
第二步: 配置需要的文件 settings.py
添加haystack應用模塊
INSTALLED_APPS = ( ... 'haystack', ...)
在settings.py 末尾添加
HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'article.whoosh_cn_backend.WhooshEngine', 'PATH': os.path.join(BASE_DIR, 'whoosh_index'), },}HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor' # 索引自動更新第三步: 配置url路徑
在 forum/forum/urls.py中包含search路徑
url(r'^search/', include('haystack.urls')),第四步:建立模型
forum/article/models.py
class Article(models.Model): ''' 文章數據模型 ''' id = models.AutoField(primary_key=True,verbose_name='文章編號') title = models.CharField(max_length=50,verbose_name='文章標題') content = MDTextField() publish_time = models.DateTimeField(auto_now_add=True,verbose_name='發表時間') last_update_time = models.DateTimeField(auto_now=True,verbose_name='最后一次修改時間') status = models.IntegerField(u'狀態', default=1) read_count = models.IntegerField(default=0,verbose_name='閱讀次數') comment_count = models.IntegerField(default=0,verbose_name='評論次數') #關聯用戶 user = models.ForeignKey(User,on_delete=models.CASCADE,verbose_name='用戶') subject = models.ForeignKey(Subject, null=True, blank=True, on_delete=models.CASCADE, verbose_name='屬于哪一個專題')
第五步:設置為那個class建立索引
如果你想針對某個app例如mainapp做全文檢索,則必須在mainapp的目錄下面建立search_indexes.py文件,文件名不能修改
例:forum/article/search_indexes.py模塊
from article.models import Articlefrom haystack import indexesclass ArticleIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) def get_model(self): return Article def index_queryset(self, using=None): return self.get_model().objects.filter(status=1)
每個索引里面必須有且只能有一個字段為document=True
第六步: 確定我們需要的屬性:
新建yourapp/templates/search/indexes/yourapp/article_text.txt來指明需要屬性
例: article/templates/search/indexes/yourapp/article_text.txt
{{ object.title }} # 文章標題{{ object.user.username }} # 文章作者{{ object.content }} # 文章內容第七步: 把搜索引擎放入項目下
例: forum/article/whoosh_cn_backend.py
將文件whoosh_backend.py(例: 我的python路徑E:/python/Lib/site-packages/haystack/backends/whoosh_backend.py
)放到article下,并重命名為whoosh_cn_backend.py,例如blog/whoosh_cn_backend.py。修改如下:
新聞熱點
疑難解答