Индексирование перечисления в компас-люцене

Я использую 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.

Другие вопросы по тегам