确定是否存在搜索API索引

时间:2012-06-21 17:46:40

标签: google-app-engine full-text-search

在我的业务逻辑中,我首先需要检查是否存在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个指数。我一定错过了什么。

我的问题是双重的:

  1. 有没有更好的方法来检查索引是否存在? (我的方式感觉不对)

  2. 为什么list_indexs只有当我们有更多时才会返回100?

  3. 编辑:-----------------------------------------

    基于@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
    

1 个答案:

答案 0 :(得分:0)

尝试使用参数start_index_name和include_start_index。

有关详细信息,请参阅docs