Полнотекстовый поиск в Mongodb с использованием Hibernate Ogm

Я хочу реализовать полнотекстовый поиск в MongoDB с помощью Hibernate OGM. Я написал код, но код возвращает мне пустой результат. Я проверил два файла, которые были созданы lucene с Luke, но кажется, что они оба пусты. Я не знаю, в чем причина моей проблемы.

Я включил полнотекстовый поиск в своей коллекции с помощью этой команды:

db.adminCommand( { setParameter : "*", textSearchEnabled : true } );

а также я поместил индекс в поле UserID в коллекции пользователей.

db.Users.ensureIndex({UserID:1 })

также у меня есть этот класс сущности:

@Entity
@Indexed
@Table(name="Users")
@GenericGenerator(name="mongodb_uuidgg",strategy = "uuid2")
public class User implements Serializable{
    private static final long serialVersionUID=1L;
    @DocumentId
    private String  id;

    @Column(name="City")
    @Field(index = Index.NO,analyze = Analyze.YES,store = Store.YES)
    private String city;

    @Column(name="UserID")
    @NumericField
    @Field(index = Index.YES,analyze = Analyze.NO,store = Store.YES)
    private int IdU;

и в моем классе DAO:

OgmConfiguration cfgogm=new OgmConfiguration();
cfgogm.configure("hibernate.cfg.xml");
serviceregistry=new ServiceRegistryBuilder().applySettings(cfgogm.getProperties()).buildServiceRegistry();
sessionfactory=cfgogm.buildSessionFactory(serviceregistry);  

sessionfactory.openSession();
FullTextSession fulltextsession= Search.getFullTextSession(sessionfactory.getCurrentSession());
QueryBuilder querybuilder=fulltextsession.getSearchFactory().buildQueryBuilder().forEntity(User.class).get();
org.apache.lucene.search.Query lucenequery=querybuilder.keyword().onField("IdU").matching(new Integer(87709)).createQuery();

org.hibernate.search.FullTextQuery fulltextquery=fulltextsession.createFullTextQuery( lucenequery,User.class );
fulltextquery.initializeObjectsWith(ObjectLookupMethod.SKIP, DatabaseRetrievalMethod.FIND_BY_ID);
List result=fulltextquery.list();
System.out.println(result.size());

Если я открою segment.gen с Люком, я увижу эту информацию: введите здесь описание изображения

Не могли бы вы помочь мне решить эту проблему? или как я могу реализовать полнотекстовый поиск с помощью Hibernate и Lucene с MongoDB

Спасибо большое


person TangoStar    schedule 26.08.2013    source источник


Ответы (1)


Я не совсем уверен, какова ваша общая цель, но вы смешиваете две вещи. Существует встроенная возможность полнотекстового поиска mongodb и Hibernate OGM, которые вы можете использовать в сочетании с поиском Hibernate. Однако это две разные вещи. Установка параметра mongodb textSearchEnabled не приведет к созданию индекса Lucene, если вы этого ожидаете. Для создания начального индекса вам потребуется использовать API индексирования Hibernate Search или средство массового индексирования.

person Hardy    schedule 05.09.2013