Лучший способ поиска даты в lucene

У меня есть сценарий, в котором у меня есть объект, с которым связано свойство доступности. Я закодировал даты в месяц как 32-битный двоичный файл с 1 для доступных и 0 для недоступных. Теперь я хочу искать объекты, которые доступны в диапазоне дат. Как мне лучше всего сделать это с люценом?


person Mahesh M    schedule 05.10.2011    source источник


Ответы (1)


Возможно, лучший способ сохранить это будет так:

available_on=20111028
available_on=20111029

где дата закодирована как целое число, и одно поле для каждой доступной даты. Затем вы можете использовать NumericRangeQuery для поиска диапазона доступности.

Если это не удастся, я думаю, вы могли бы написать фильтр, чтобы перебирать каждое значение, используемое для вашего битового поля, и выбирать те, у которых установлен один из необходимых битов.

person araqnid    schedule 05.10.2011
comment
Я думал о части фильтра. Это хороший метод? При реализации предыдущего метода у вас будет слишком много записей, верно? Так что, если он будет полностью доступен в октябре месяце, у вас будет 31 запись. Это хороший подход? - person Mahesh M; 05.10.2011
comment
что количество значений в многозначном поле действительно не является проблемой. Вероятно, вы также будете фильтровать запрос (FQ) по дате, и только с этим числом различных доступных значений значения кэшируются очень быстро. Просто убедитесь, что вам нужна только информация о доступности, а не некоторые данные (например, цены), относящиеся к каждой из дат доступности. - person Geert-Jan; 05.10.2011
comment
Фильтрация происходит перед индексацией. Итак, как это может быть полезно в моем поиске в этом конкретном случае? или мы можем добавить собственные методы поиска? - person Mahesh M; 21.10.2011