Получите случайный результат поиска от 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.

Другие вопросы по тегам