我正在尝试使用Haystack和Whoosh在我的应用程序中进行索引和搜索。 当我重建索引时,我得到以下结果:Django-Haystack + whoosh - rebuild_index后的空索引
删除了所有文档。更新后端:默认默认:后端 不需要重建。跳绳
这是我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文件(位于模板/搜索/索引/ MYAPP /):
{{ object.headline }}
{{ object.body }}
我加干草堆到INSTALLED_APPS及其在配置文件中的配置。 我的数据库是sqlite(仅用于开发...)。
我在做什么错?
谢谢!
[R
UPDATE
创建这样的管理命令(如你所愿命名文件 - e.g 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
你是绝对正确的,但我尝试过,但仍然没有成功。也许我做错了什么......我用import和'class Command(rebuild_index.Command)创建了一个名为blog_rebuild.py的文件:pass' – Rani
您需要对'update_index'执行相同的操作 - 这由Haystack的'rebuild_index '。 – solarissmoke
它的工作原理!我的blog_rebuild仍然不会执行任何操作,只能使用blog_update_index.py。可以吗? – Rani