我有一個django應用程序(博客),我試圖用elasticsearch實現django乾草堆。我遇到的問題是,當通過搜索<p>
或<html>
來測試搜索功能時,我並不期望得到任何結果,但它會返回我的所有帖子。這裏是我的應用程序/模型的樣子:Django乾草堆搜索html標籤返回所有文章
博客/ models.py
class Posts(models.Model):
title = models.CharField(max_length=200, unique=True)
html_content = models.TextField(blank=True, null=True)
markdown_content = models.TextField(blank=True, null=True)
date_created = models.DateTimeField(auto_now=False, auto_now_add=True)
last_updated = models.DateTimeField(auto_now=True, auto_now_add=False)
tags = models.ManyToManyField(Tag, through='PostTags')
def save(self, *args, **kwargs):
self.html_content = markdown.markdown(
self.markdown_content,
["markdown.extensions.extra", "codehilite"]
)
super(Posts, self).save(*args, **kwargs
博客/ search_indexes.py
from haystack import indexes
from .models import Posts
class PostsIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(
model_attr='text',
document=True,
use_template=True
)
title = indexes.CharField(model_attr='title')
markdown_content = indexes.CharField(
model_attr='markdown_content',
null=True,
indexed=False
)
html_content = indexes.CharField(
model_attr='html_content',
null=True,
indexed=False
)
def get_model(self):
return Posts
def index_queryset(self, using=None):
return self.get_model().objects.all()
現在我想,當我搜索<p>
或<html>
是返回所有我的帖子,因爲我在數據庫中保存html標籤,我錯了嗎?如果是這樣,我怎麼能指定忽略任何HTML標籤?
我也試過使用indexes.ModelSearchIndex
並排除html_content
這個字段,但是搜索html標籤似乎會返回所有的帖子......誰能告訴我我做錯了什麼?
我是django-haystack和elasticsearch的新手,所以如果我正在做一些非常基本的錯誤,我會事先道歉並感謝您的幫助。