API поиска Appengine — InvalidRequest

Я использую API поиска (https://cloud.google.com/appengine/docs/standard/python/search/) в стандартной среде Google App Engine Python.

В моем приложении у меня есть несколько поисковых индексов, и я запрашиваю их с разбиением на страницы курсора (разбиение на страницы не может возвращать более 1000 результатов) https://cloud.google.com/appengine/docs/standard/python/search/cursorclass

Иногда я случайно получаю следующее исключение:

InvalidRequest: не удалось выполнить поисковый запрос "‹search query>"

без дальнейших подробностей. Если я получу его в середине какого-то запроса, он будет воспроизводиться вечно с таким курсором.

  1. Набор элементов неизменен между запросами (элементы не добавляются и не удаляются)
  2. Первая страница запроса всегда в порядке (исключение возникает, только если я запрашиваю с помощью курсора)
  3. Я не использую сортировку
  4. Курсоры точно такие же, как полученные предыдущим запросом, и не повреждаются между запросами.

Есть идеи, как это решить?

Связанный:

https://issuetracker.google.com/issues/35898069

https://issuetracker.google.com/issues/35895008

https://groups.google.com/forum/#!topic/google-appengine/tBHkZLeYTOI

Что означает это сообщение об ошибке в appengine?


person glmvrml    schedule 03.03.2017    source источник


Ответы (1)


Наконец, мы смогли выяснить, что вызывало случайные ошибки.

  1. Сделайте первый запрос "A=1 AND B=2" и получите ‹cursor>
  2. Сделайте второй запрос с помощью ‹cursor> "A=1 AND B=2" - работает нормально
  3. Сделайте второй запрос с помощью ‹cursor> "B=2 AND A=1" - тот же запрос, но порядок параметров не соответствует исходному запросу - InvalidRequest без объяснения причин.
person glmvrml    schedule 24.03.2017