Если пара день / месяц сложна (я не знаю, так это или нет), почему бы не указать поле "их день рождения в 1980 году" (были ли они живы тогда или нет). Тогда вам просто нужно выполнить поиск по 1980 году. Это эффективно пара день / месяц, но хранится в типе, который вы можете легко использовать.
Обратите внимание, что 1980 год - високосный год, поэтому я выбрал его, иначе трудно представить те, у кого день рождения 29 февраля.
Альтернативно, пара «день / месяц» в виде целого числа:
(100 * month) + day
даст вам простое представление, которое будет легко искать и индексировать. Обычно я обнаружил, что хранить данные в одном поле проще, чем использовать два поля. Опять же, я никогда не использовал Solr ...
РЕДАКТИРОВАТЬ: У меня была другая идея. Это немного мягко, но даже так ...
Сохраните дату рождения дату в формате, который является эффективно месяцем, днем, годом. Я не знаю, может ли Solr легко сделать это в формате MM / dd / yyyy, а затем выполнить поиск по лексикографическому порядку, но альтернатива -
(100000 * month) + (1000 * dayOfMonth) + (year - 1900)
(Предполагается, что вам не нужно хранить даты рождения ранее 1900 года. Я уверен, что вы можете настроить его.)
Вы все еще можете восстановить первоначальную дату рождения, но порядок будет в порядке дня рождения, причем самый старый человек будет первым для любой конкретной даты.
Это означает, что трудно сортировать людей по их фактическому возрасту . Я не знаю, если это проблема для вас.
Во всяком случае, как я уже сказал, это немного нестандартно, но это может помочь:)