2016-07-19 5 views
2

私はアプリケーションでインデックスと検索にWhooshと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()) 

これは(テンプレート/検索/インデックス/ myappの中にあります/)私のblog_text.txtファイルです:私は追加

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

haystackをINSTALLED_APPSに設定し、その設定ファイルを設定ファイルに保存します。 私のDBはsqliteです(開発用です...)。

私は間違っていますか?

ありがとうございます!

R

UPDATE

このような管理コマンドを作成します(あなたが望むようにファイルに名前を付ける - 例えば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を呼び出します。したがって、新しいrebuildコマンドを作成しても、間違ったコマンドが検索されます。

インデックスを再構築する場合は、両方のコマンドを実行してください。それ以外の場合は、update_indexコマンドを実行してください。

もう1つ注意してください:テンプレートtxtファイルのフォルダの名前は、インデックスを作成しようとしているモデルとまったく同じでなければなりません(インデックスクラスのどこに書かれているかは関係ありません)。 )。

答えて

4

を@solarissmokeする

そしてもちろん、信用私はあなたが同様にあなたのプロジェクトにセキレイがインストールされていることを賭けています - Backend doesn't require rebuildがどこから来ていることがあるからです。

問題は、WagtailがHaystackにあるものと競合する管理コマンド( update_index)とそれ自身のupdate_index管理コマンドを定義しているという点です。インデックスを再構築しようとすると、Haystackコマンドの代わりにWagtailコマンドが呼び出されます。そのコマンドは最後にロードされ、セキレイのものに置き換えられます -

迅速かつ汚いソリューションは、INSTALLED_APPSwagtailhaystackが来ることを確認することです。

代わりに、Haystackのrebuild_indexコードをラップする独自の管理コマンドを作成する必要があります。

+0

あなたは絶対に正しいですが、私は両方を試してもまだ成功していません。たぶん私は何か間違っていました...私はimportと 'classコマンド(rebuild_index.Command):pass'を使ってblog_rebuild.pyというファイルを作成します。 – Rani

+0

' update_index'のために同じことをする必要があります - これはHaystackの 'rebuild_index '。 – solarissmoke

+0

それは動作します!私のblog_rebuildはまだ何もしませんが、blog_update_index.pyは動作します。大丈夫ですか? – Rani

関連する問題