Java 休眠搜索@IndexedEmbedded
我有类似的情况,比如Java 休眠搜索@IndexedEmbedded,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我有类似的情况,比如 @实体 @索引 公共课场所{ @身份证 @生成值 @文档ID 私人长id; @字段(index=index.TOKENIZED) 私有字符串名称; @OneTONE(cascade={CascadeType.PERSIST,CascadeType.REMOVE}) @指数化 私人地址; .... } @实体 公共课堂演讲{ @身份证 @生成值 私人长id; @字段(索引=索引。标记化) 私家弦街;; @字段(索引=索引。标记化) 私人城市; @包含 @OneToMany(m
@实体
@索引
公共课场所{
@身份证
@生成值
@文档ID
私人长id;
@字段(index=index.TOKENIZED)
私有字符串名称;
@OneTONE(cascade={CascadeType.PERSIST,CascadeType.REMOVE})
@指数化
私人地址;
....
}
@实体
公共课堂演讲{
@身份证
@生成值
私人长id;
@字段(索引=索引。标记化)
私家弦街;;
@字段(索引=索引。标记化)
私人城市;
@包含
@OneToMany(mappedBy=“地址”)
私人场所;
...
}
现在的问题是:
例如,如果我更改了实体位置中的名称字段,将重新索引哪些实体
1) 只有名称字段
2) 整个地方的实体
3) 整个地点实体和用@IndexedEmbedded注释的实体
我需要的是第三个。因此,如果它不是标准的,有什么解决方案可以实现这种行为吗?您可以使用以下代码手动重新索引Place实体
public void updateIndex(T entity){
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
fullTextEntityManager.index(entity);
fullTextEntityManager.getSearchFactory().optimize(entity.getClass());
}
其次,如果您使用hibernate,您可以在
persistence.xml
中配置lucene,以自动更新更改的实体的索引幸运的是,这确实是第三个,所以我很幸运,它可以按预期工作实际上,这不是我要找的。我对自动处理感兴趣,你能举一个这种配置的例子吗?
public void updateIndex(T entity){
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(em);
fullTextEntityManager.index(entity);
fullTextEntityManager.getSearchFactory().optimize(entity.getClass());
}