gpt4 book ai didi

Django-Haystack + Whoosh - 重建索引后的空索引

转载 作者:行者123 更新时间:2023-12-01 10:34:14 27 4
gpt4 key购买 nike

我正在尝试结合使用 Haystack 和 Whoosh 在我的应用程序中编制索引和搜索。当我重建索引时,我得到了这个结果:

All documents removed. Updating backend: default default: Backend doesn't require rebuild. Skipping

这是我的 SearchIndex 类:

class BlogIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True, template_name="snip_text.txt")
headline = indexes.CharField(model_attr="headline", null=True)
body = indexes.CharField(model_attr="body")


def get_model(self):
return Snip

def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(date__lte=timezone.now())

这是我的 blog_text.txt 文件(位于 templates/search/indexes/myapp/中):

{{ object.headline }}
{{ object.body }}

我将 haystack 添加到 INSTALLED_APPS 及其在设置文件中的配置。我的数据库是 sqlite(仅用于开发...)。

我做错了什么?

谢谢!

R

更新

创建这样的管理命令(根据需要命名文件 - 例如 my_update_index.py)

from haystack.management.commands import update_index

class Command(update_index.Command):
pass

对 clear_index 命令执行相同的操作。

rebuild_index 命令调用 clear_index 和 update_index,因此即使您创建一个新的重建命令它也不会工作(因为它正在寻找错误的命令)。

当您想要重建索引时,只需运行这两个命令,否则运行您的 update_index 命令。

还有一点要注意:模板 txt 文件的文件夹名称必须与您要索引的模型完全相同(显然您在索引类中的位置并不重要...... ).

当然,归功于@solarissmoke

最佳答案

我打赌你的项目中也安装了 Wagtail - 因为那是 Backend doesn't require rebuild 的位置来自。

问题是 Wagtail 定义了自己的 update_index 管理命令,这与 Haystack 的管理命令冲突(rebuild_index 调用 update_index)。当您尝试重建索引时,将调用 Wagtail 命令而不是 Haystack 命令。

快速而肮脏的解决方案是确保 haystackINSTALLED_APPS wagtail - 它的命令将最后加载并将替换 Wagtail 的。

或者,您需要编写自己的管理命令来包装 Haystack 的 rebuild_index 代码。

关于Django-Haystack + Whoosh - 重建索引后的空索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38469577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com