如何向haystack模型索引添加相关数据?

1 投票
1 回答
1199 浏览
提问于 2025-04-16 12:10

我在我的初学者Django应用中添加了haystack搜索,并成功为一个模型创建了索引,使用了模板功能。不过,我在将相关数据添加到这个模板索引时遇到了一些问题。我尝试了以下代码:

{{object.name}}
{% for tag in object.tags.all %}
{{tag.name}}
{% endfor %}

索引添加得很正确,我可以在对象的名称属性上得到搜索结果,但在相关标签上却没有。我已经通过在普通页面模板中使用相同的模板结构,确认了关系是正确的,并且标签的名称值能够正常显示在屏幕上。

我该如何调试索引的创建呢?目前我使用的是简单搜索后端,所以我相信索引是存在内存中的。

这是我的search_indexes.py文件:

from data.models import VendingMachine
from haystack.indexes import *
from haystack import site


class VendingMachineIndex(SearchIndex):
    text = CharField(document=True, use_template=True)

site.register(VendingMachine, VendingMachineIndex)

而相关的文件叫做vendingmachine_text.txt,位于templates/search/indexes/data/目录下,其中data是应用的名称。

1 个回答

1

我觉得问题出在这个“简单”的搜索后端上。它是新的,只适合用来假装有搜索功能。你可以试试 whoosh、sorl 或 xapian 这些工具。

我查看了 haystack/backends/simple.py 这个文件。这个后端是基于 ORM 的,它没有内存中的搜索索引。只能通过模型字段来进行搜索。

撰写回答