我正在嘗試使用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