Ограничения QueryOptions и SortOptions API поиска Google
У меня проблемы с пониманием "ограничений" в Google Search API.
Документы показывают этот пример:
// Build the SortOptions with 2 sort keys
SortOptions sortOptions =
SortOptions.newBuilder()
.addSortExpression(
SortExpression.newBuilder()
.setExpression("price")
.setDirection(SortExpression.SortDirection.DESCENDING)
.setDefaultValueNumeric(0))
.addSortExpression(
SortExpression.newBuilder()
.setExpression("brand")
.setDirection(SortExpression.SortDirection.DESCENDING)
.setDefaultValue(""))
.setLimit(1000)
.build();
// Build the QueryOptions
QueryOptions options =
QueryOptions.newBuilder()
.setLimit(25)
.setFieldsToReturn("model", "price", "description")
.setSortOptions(sortOptions)
.build();
Предел для SortOptions описывается как:
Максимальное количество объектов для оценки и / или сортировки. Не может быть больше 10 000 По умолчанию: 1000
Предел для QueryOptions описывается как:
Документация объясняет лимит как: максимальное количество документов для возврата в результатах. По умолчанию: 20 Макс.: 1000
Я лично хочу, чтобы как можно больше результатов возвращалось с нумерацией страниц. Примечание: я использую курсор.
Означает ли это, что если я хочу использовать QueryOptions
Я ограничен 1000 результатов, хотя SortOptions
может вернуть 10000 результатов?
Или все документы будут возвращены только с первой отсортированной 1000?
Я обеспокоен тем, что, как только я доберусь до конца 1000 документов с моим курсором, больше не будет возвращено, даже если есть более 1000 документов.
1 ответ
Вы всегда получите только первые 1000 документов из отсортированного набора, потому что QueryOptions и SortOptions (и их ограничения) контролируют различные этапы извлечения потока результатов.
SortOptions.limit уведомляет механизм индексирования об использовании ограниченного набора документов при подготовке результирующего набора. Но QueryOptions.limit используется при получении документов из индекса.
Например, представьте следующую ситуацию, аналогичную СУБД: вам нужно создать сложный запрос, и вы создадите отсортированное представление с верхним / нижним пределом. В этом случае:
- SortOptions.limit - используется при создании представления;
- QueryOptions.limit - когда вы выбираете данные из представления.