2014-09-09 3 views
0

Я ищу способ получить некоторый случайный образец из моих результатов запроса. Дело в том, что оно должно сохранять порядок, и оно должно повторяться с тем же семенем. Я пытался с помощью настраиваемого фильтра, но у него нет доступа ко всем возвращенным документам за один вызов. В худшем случае я собираюсь вызвать запрос, чтобы получить идентификаторы, образец из его массива и запрос запроса еще раз с дополнительным фильтром (дело в том, что мне это нужно в нескольких разных местах, и у меня есть один общий метод построения фильтра)Случайный образец с lucene 4

У вас есть идея?

С уважением

ответ

1

RandomSortField делает именно это, так что если вам нужно оставаться на уровне Lucene, вы можете просто посмотреть на исходный код и посмотреть, как трудно связать все Java код, необходимый на вершине Lucene

+0

Извините, но это решение не будет работать в моем случае. RandomSortField используется для случайной сортировки. Но я хочу предотвратить порядок, заданный объектом Sort. Просто выберите n случайных документов. –

+0

, что было бы сделано в Solr, сортируя случайным образом, а затем спрашивая только о X top docs, поэтому вы получите желаемое поведение. – Persimmonium

+0

Нет. Потому что, как вы сказали, это будет «отсортировано случайным образом». Но я хочу сохранить порядок, описанный экземпляром Sort (например, по дате) –

0

Наконец-то я решил проблему, получив все документы, создав коллекцию полей id, сэмплируя этот массив и добавив результат сэмплирования в фильтры основного запроса Lucene. И снова поиск результатов.

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