Получите случайный результат поиска от Amazon CloudSearch
Мой запрос похож на:
/2013-01-01/search?q=(and author:'william' category:'Videos')&q.parser=structured&expr.random=_rand&return=_all_fields&size=1
и возвращает видео. Тем не менее, я хочу случайный videoId на каждый запрос.
Используя выражение &expr.random=_rand;
Я не могу получить случайный результат, и мне не удалось найти какое-либо решение в документации.
Как я могу получить случайный результат поиска по каждому запросу?
2 ответа
Вы можете сделать это через нумерацию страниц, установив start
параметр к случайному значению от 0 до hits.found
и запрашивающий size=1
:
search?q=matchall&q.parser=structured&size=1&start={yourRandomNumber}
Если количество документов в вашем индексе колеблется, вам нужно сделать 2 запроса: один, чтобы получить максимальное количество результатов (возвращается как hits.found
), а другой для получения случайного результата.
Документы CloudSearch отсутствуют. Мне нужно было что-то похожее, и я не нашел Google, поэтому я начал догадываться, применив то, что я уже знал о Solr, и нашел решение:
/2013-01-01/search?q=what&sort=_rand_1 desc
Обратите внимание, что _rand также будет работать, однако после первого поиска он всегда будет возвращать те же результаты, что на самом деле идеально, если вам нужно разбить на страницы случайный набор результатов (в Solr это работает аналогично). Таким образом, чтобы получать случайные результаты каждый раз, когда вам нужно случайным образом сгенерировать _something и добавить его в _rand.