0

このように機能するように見えるインデックスを作成しています

    doc = search.Document(doc_id=str(article.key()), fields=[
        search.TextField(name='title', value=article.title),
        search.TextField(name='text', value=article.text),
        search.TextField(name='city', value=article.city),
        search.TextField(name='region', value=article.region),
        search.NumberField(name='cityID', value=city_entity.key().id()),
        search.NumberField(name='regionID', value=region_entity.key().id()),
        search.NumberField(name='category', value=int(article.category)),
        search.NumberField(name='constant', value=1),
        search.NumberField(name='articleID', value=article.key().id()),
        search.TextField(name='name', value=article.name)
        ], language='en')
    search.Index(name='article').add(doc)

アプリは、機能しているように見える上記のコードによってインデックスを設定する新しい記事を取得します。インデックスが作成され、検索APIを使用してエンティティを検索できます。しかし、60日より古い記事は必要ないので、どうすればそれに適応できますか?エンティティには「作成済み」と「更新済み」のタイムスタンプがあります。

added = db.DateTimeProperty(verbose_name='added', auto_now_add=True)  # readonly
modified = db.DateTimeProperty(verbose_name='modified',
                                   auto_now_add=True)

インデックス全体を再構築する24時間ごとのcronジョブ、またはインデックスから最も古いエンティティを削除する24時間ごとのcronジョブが必要ですか?added現在、インデックスに変数と変数を追加していません。これmodifiedは、インデックス(?)で特定のタイムスタンプを検索する場合など、インデックスでも役立ちます。これで、動作していることがわかります。多くの場合、インデックス変数に作用し、addedおよびmodified変数をインデックスに追加しますか?

4

1 に答える 1

1

インデックスは自動的かつ継続的に作成され、このプロセスを制御することはできません。エンティティが変更(または作成/削除)されると、インデックスが更新されます。これから特定のエンティティを除外する方法はありません。

古いドキュメントがまったく必要ない場合は、それらを削除する必要があります。

ただし、どちらの場合(提供または削除)でも、複数の等式フィルター(、、、などtitle)と1つの不等式フィルター(on )を使用する必要があるため、複合インデックスを構成する必要があります。textcitycreated

于 2013-02-17T09:12:56.210 に答える