Hibernate Search, отфильтровать объект с наибольшим значением

Привет, у меня есть EntityObject, подобный этому

public class Adm{
private String id;
private String version;
private String name;
private String mimetype;
    ... 
    ...
    ...

}

Я хотел бы добавить фильтр для всех объектов с самой высокой версией этих объектов с тем же именем. У кого-нибудь есть идеи, как это сделать, с фильтром или при создании запроса?

Я использую Hibernate Search версии 3.3.0.

//Тринд


person Trind    schedule 05.05.2011    source источник


Ответы (1)


Способ фильтрации в поиске — через FullTextFilters. См. http://docs.jboss.org/hibernate/stable/search/reference/en-US/html_single/#query-filter Вы можете передавать параметры фильтру при их включении, например

fullTextQuery.enableFullTextFilter("version").setParameter( "max", 1001 );

Вы можете передать столько параметров, сколько хотите, а также передать любой тип параметра, который вы хотите (вам просто нужно будет соответствующим образом выполнить приведение в реализации фильтра). Вероятно, вам понадобится другой запрос для определения максимальных значений. Возможно, все-таки запрос HQL или Criteria. В Filter вы можете использовать NumericRangeQuery. Конечно, все это зависит от модели вашего домена. Вы не включили аннотации Hibernate Search и запрос Hibernate Search, который пытаетесь запустить. Также можно ли заранее определить максимальную версию и кэшировать? Надеюсь, это даст вам несколько советов.

person Hardy    schedule 17.05.2011
comment
Как мне решить эту проблему по-хорошему, когда мне нужен самый высокий номер версии с тем же именем? - person Trind; 18.05.2011
comment
То, как я это сделал сейчас, - это индексировать, если объект имеет наивысшее значение, однако проблема, с которой я столкнулся, заключается в том, что мне нужно повторно индексировать все остальные с тем же именем, если есть новая запись с более высокой версией. Я не понял, могу ли я просто переиндексировать одно поле в объекте. - person Trind; 18.05.2011