Solr получить результаты в соответствии с распределением
Есть ли способ в solr
получить результаты по некоторому распределению одного из проиндексированных полей?
Например, представьте, что у меня есть каталог книг с полями "синопсис", "публикации_год" и "жанр". Я хотел бы создать запрос, который возвращает наиболее релевантные результаты в соответствии с "синопсисом" в пользу самых последних опубликованных книг. Однако в окончательных результатах (скажем, 1000) я бы хотел, чтобы жанр распределялся как можно точнее, в зависимости от некоторого данного распределения, например: 50% научной фантастики, 25% научной литературы, 10% политики и так далее.,
Я знаю, что мог бы получить большой набор результатов и выполнить какую-то взвешенную выборку из резервуара, чтобы получить последние 1000 книг за пределами solr, но я ищу решение, которое было бы только Solr.
Это возможно? Если нет, то есть ли у вас какие-либо советы о том, как решить проблему?
1 ответ
Хотя вы не сможете подключить свой дистрибутив, но вы можете использовать Collapse and Expand или Result Grouping, чтобы получить n результатов для каждого жанра. Затем вы игнорируете любой результат, возвращенный выше порогового значения для этой группы.
Вам нужно будет установить максимальное количество сегментов в каждой группе для количества документов в вашем распределении общего количества обращений, т.е. 500 в приведенном выше примере. Это может дать вам очень большой набор документов для работы, поэтому я постараюсь сохранить общее количество возвращенных pr. жанр довольно маленький в начале, по крайней мере.
Возможно, есть какой-то способ сделать размеры групп более динамичными, расширив одну из двух вышеупомянутых функций и добавив свой собственный код для ограничения количества документов, собираемых в жанре.