2012-06-21 3 views
0

В моей бизнес-логике я сначала должен проверить, существует ли индекс API Appengine Search API. Если он существует, я определяю длину.Определите, существует ли указатель 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_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 

ответ

0

Попробуйте использовать параметры start_index_name и include_start_index.

Дополнительную информацию см. На странице docs.

+0

спасибо за предложение. Я попробовал это и отредактировал мой вопрос выше. Я нахожусь в тупике по очень загадочному сообщению _ToSearchError (e). Мысли? – user1453956

+0

Попробуйте изменить лимит на 100. Это сработало для меня. Кроме того, в вашем случае я считаю, что более целесообразно использовать index_name_prefix. –

+0

index_name_prefix сделал трюк. Большое спасибо. – user1453956