繁体   English   中英

休眠搜索。 如何从索引中排除实体?

[英]Hibernate search. How to exclude entity from index?

我是休眠搜索的新手,我需要在应用程序数据库中使用它。 我有几个索引实体类,我想根据它们的状态从索引中排除一些实体。 我的情况下,我想排除模板== null的对象,我已经找到并实现了此功能 ,但是此拦截器不起作用\\调用

这就是我所拥有的

public class WorkDocumentInterceptor implements EntityIndexingInterceptor<WorkDocument> {

@Override
public IndexingOverride onAdd(WorkDocument workDocument) {
    System.out.println("on ADD workDocument = " + workDocument.getId());
    if (workDocument.getTemplate() == null) {
        System.out.println("SKIP DOCUMENT " + workDocument.getId() + ":" + workDocument.getTitle());
        return IndexingOverride.SKIP;
    }
    return IndexingOverride.APPLY_DEFAULT;
}

@Override
public IndexingOverride onUpdate(WorkDocument workDocument) {
    if (workDocument.getTemplate() == null) {
        return IndexingOverride.REMOVE;
    }
    return IndexingOverride.UPDATE;
}

@Override
public IndexingOverride onDelete(WorkDocument workDocument) {
    return IndexingOverride.APPLY_DEFAULT;
}

@Override
public IndexingOverride onCollectionUpdate(WorkDocument workDocument) {
    return onUpdate(workDocument);
}

}

实体类

@Entity
@Table(name = "work_document")
@Indexed(interceptor = WorkDocumentInterceptor.class)
public class WorkDocument implements Serializable {


    @Id
    @Basic(optional = false)
    @Column(name = "id")
    private Long id;

    Template template;
    ...  
}

当索引正在运行时,我什至看不到此输出,似乎拦截器未调用

System.out.println("on ADD workDocument = " + workDocument.getId());

要重建索引,我称之为

            em.createIndexer(clazz)
                    .purgeAllOnStart(true)
                    .optimizeAfterPurge(true)
                    .optimizeOnFinish(true)
                    .batchSizeToLoadObjects(25)
                    .cacheMode(CacheMode.IGNORE)
                    .threadsToLoadObjects(5)
                    .threadsForIndexWriter(3)
                    .threadsForSubsequentFetching(20)
                    .startAndWait();

为什么不起作用? 谢谢。

我花了半天时间找到解决方案。

只需将休眠搜索版本从4.1.1更改为4.2.0

拦截器按预期工作

现在,条件索引的初始版本确实可以与质量索引器一起使用。 这在Hibernate Search 4.2.0.Final中得到了解决。 https://hibernate.onjira.com/browse/HSEARCH-1190下可以跟踪该问题

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM