2015-03-14 15 views
5

Supponiamo che io sono 2 entità commentato per ricerca a testo integrale:Filtra i risultati di ricerca testo completo di campo userId con Hibernate

@Entity 
public class User implements Serializable { 

    @Id 
    public Long id;  
    ... 

} 

@Entity 
@Indexed 
public class Post { 

    @Id 
    public Long id; 

    @Field(name = "content") 
    public String content; 

    @ManyToOne 
    public User user; 

    ... 

} 

E 'molto semplice da write full text search on just content field. Ma come posso filtrare i risultati per parola chiave testuale e ID utente? Ad esempio una query per cercare "ciao" sul campo contenuto e user.id uguale a 10?

risposta

2

La parola chiave che stai cercando è l'annotazione IndexedEmbedded.

@ManyToOne 
@org.hibernate.search.annotations.IndexedEmbedded(includePaths={ "userId" })  
public User user; 

Se ora si crea il LuceneIndex, ci sarà un campo di nuovo nella tua LuceneDocument chiamato User.userId. Ora è possibile cercare UserId (come String) e il contenuto in combinazione. Si prega di dare un'occhiata a Luke per ispezionare i file di indice.

Problemi correlati