2016-07-01 2 views
0

У меня есть документы с содержимым TextField и датой DateField. Я пытаюсь получить самые последние документы.Сортировка по дате с API поиска приложений AppEngine

  • Обычный поиск с 'датой> эпохи', похоже, уже сортирует результаты по дате. Это ожидаемое поведение?
  • Когда я пытаюсь явно сортировать с помощью SortExpression, результаты даже не сортируются в каком-либо конкретном порядке (кроме сервера dev, где он также работает).

Я использую следующий код:

index.search(search.Query(query_string='date > epoch', 
          options=search.QueryOptions(
          sort_options=search.SortOptions(
           expressions=[search.SortExpression(
           expression='date', 
           direction=search.SortExpression.DESCENDING, 
           default_value='1970-01-01')]))) 

Что такое правильный способ сделать это?

ответ

2

Согласно документации, все документы сортируются по их рангу, если вы не указали другую опцию сортировки. И ранжирование документа устанавливается на время, когда оно было добавлено в индекс, опять же, если вы не указали другой ранг.

Если это ваше желаемое поведение, нет необходимости добавлять поле даты и сортировать его.

1

Когда вы фильтруете поле, которое вы вынуждаете использовать индекс, а в качестве побочного результата вывод будет отсортирован по этому полю.

https://cloud.google.com/appengine/docs/python/search/options

При вызове методы поиска(), используя строку запроса в одиночку, то результатов возвращается в соответствии с параметрами по запросу по умолчанию:

  • Документов возвращаемые отсортированы в порядке убывания убывающий разряд
  • документы верны в группах по 20м каждый одновременно
  • документы, использованные в источнике l поля

Не знаю, почему он не работает с явными вариантами сортировки.

Смежные вопросы