【发布时间】:2013-10-31 12:05:47
【问题描述】:
我在我们的 django 应用程序中使用 haystack 进行搜索,搜索工作得很好。但是我遇到了实时搜索的问题。对于实时搜索,我使用的是 haystack 的默认 RealTimeSignalProcessor(haystack.signals.RealtimeSignalProcessor)。我的模型中包含一个多对多字段。当仅针对这个多对多字段更改数据时,实时信号处理器似乎没有正确更新索引数据。更新多对多数据后,我得到错误的搜索结果。
它在手动运行rebuild_index 命令后工作。我认为rebuild_index 正在工作,因为它先进行清理,然后再构建索引数据。
有人可以提出一些解决问题的方法吗?
顺便说一下,下面是围绕它的代码。
型号:
class Message_forum(models.Model):
message = models.ForeignKey(Message)
tags = models.ManyToManyField(Tag, blank=True, null=True) #this is many to many field
search_index.py:
class Message_forumIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.EdgeNgramField(document=True, use_template=True)
message = indexes.CharField(model_attr='message', null=True)
tags = indexes.CharField(model_attr='tags', null=True)
def get_model(self):
return Message_forum
def index_queryset(self, using=None):
return self.get_model().objects.all()
def prepare_tags(self, obj):
return [tag.tag for tag in obj.tags.all()]
索引模板:
{{ object.tags.tag }}
settings.py:
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
我正在使用最新版本的 haystack 和 whoosh 作为后端。
【问题讨论】:
标签: django search django-haystack whoosh