Индексирование перечисления в компас-люцене
Я использую Compass для фильтрации данных из объекта DTO. Я отмечаю поля @SearchableComponent
если это объект POJO, с SearchableProperty
если это строка Это работает отлично: я получаю объект и String проиндексированы.
Мой вопрос: как бы я аннотировал тип данных ENUM?
Пример перечислений у меня есть:
public enum FooBar {
FOO("foo"),
BAR("bar");
private final String value;
..(constructor)..
public String value() {
return value;
}
}
Где в этом фрагменте я должен поместить аннотацию и какую аннотацию я должен поместить?
1 ответ
Начиная с версии 2.1, это работает из коробки, используя @SearchableProperty
аннотация к полю, относящемуся к типу этого перечисления, например.
@SearchableProperty
FooBar foobar;
Поиск использует enum name в качестве возвращаемого типа фильтрации. Работа с ценностью, которая была в вопросе, должна быть обработана после того, как поиск выполнен по именам.
Смотрите примечания к выпуску Compass 2.1.0.