0

私のビジネス ロジックでは、最初に Appengine Search API インデックスが存在するかどうかを確認する必要があります。存在する場合は、長さを決定します。

for index in search.list_indexes(fetch_schema=False):
   if name == index.name:
        indexed = True

問題は、リスト全体が返されないことです。だから私は次のことを試しました:

for index in search.list_indexes(fetch_schema=False, limit=500):
    logging.info("sent name: " + name + " : official index name: " + index.name)

その結果、100 個のインデックスに制限されました。私は何かが欠けているに違いない。

私の質問は 2 つあります。

  1. インデックスが存在するかどうかを確認するより良い方法はありますか? (私のやり方は間違っているように感じます)

  2. 明らかに多いのに、list_indexes が 100 しか返さないのはなぜですか?

編集: - - - - - - - - - - - - - - - - - - - - -

@skreft の提案に基づいて、コードを次のように更新しました。

    for index in search.list_indexes(fetch_schema=False, include_start_index=True, start_index_name="some_index", limit=1000):
        logging.info("sent name: " + name + " : official index name: " + index.name)
        if name == index.name:
            indexed = True`enter code here`

しかし問題は、非常に不可解なエラー メッセージが表示されることです。私はかなり明示的にドキュメントに従いました。他の誰かがこれを起こしていますか?(以下のエラー):

Traceback (most recent call last):
  File "/base/data/home/apps/s~searchbertha-hrd/82.359784956262345840/models.py", line 1898, in build_searchable_index
    for index in search.list_indexes(fetch_schema=False, include_start_index=True, start_index_name=name, limit=1000):
  File "/base/python_runtime/python_lib/versions/1/google/appengine/api/search/search.py", line 675, in list_indexes
    raise _ToSearchError(e)
InvalidRequest
4

1 に答える 1

0

パラメータ start_index_name と include_start_index を使用してみてください。

詳細については、ドキュメントを参照してください。

于 2012-06-21T17:54:38.783 に答える