2013-09-29 5 views
0

Я пытаюсь реализовать граненый поиск с помощью Hibernate Search, я понял, что для того, чтобы граненый поиск среди ваших модальностей вам нужно добавить @Field аннотацию, как следующий примерHibernate Грановитая поиск существующих данных

@Entity 
@Indexed(index = "index/books") 
public class Book { 
    private Long id; 
    private String title; 
    private String author; 
    private String category; 
    private int price; 

    @Id 
    @GeneratedValue 
    public Long getId() { 
     return id; 
    } 

    @Field(name = "title", analyze = Analyze.YES, store = Store.YES) 
    public String getTitle() { 
     return title; 
    } 

    public void setTitle(final String title) { 
     this.title = title; 
    } 

    public void setId(final Long id) { 
     this.id = id; 
    } 

    public void setAuthor(final String author) { 
     this.author = author; 
    } 

    @Field(analyze = Analyze.NO, store = Store.YES) 
    public String getAuthor() { 
     return author; 
    } 

    @Field(analyze = Analyze.NO, store = Store.YES) 
    public String getCategory() { 
     return category; 
    } 

    public void setCategory(final String category) { 
     this.category = category; 
    } 

    @Field(analyze = Analyze.NO, store = Store.YES) 
    public int getPrice() { 
     return price; 
    } 

    public void setPrice(final int price) { 
     this.price = price; 
    } 

} 

I подумайте, что это сработает для каждой новой записи, но как насчет моих существующих данных? Есть ли способ включить мои существующие данные для спящего грантового поиска.?

ответ

0
  FullTextSession fts = 
    org.hibernate.search.Search.getFullTextSession(getSession()); 

     List<YourEntity> entities = super.listAll(); 
for (YourEntity item : entities) { 
    fts.index(item); //manually index 
} 
Смежные вопросы