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

Java 休眠搜索。如何从索引中排除实体?,java,hibernate,interceptor,hibernate-search,Java,Hibernate,Interceptor,Hibernate Search,我不熟悉hibernate搜索,我需要在我的应用程序数据库中使用它。 我有几个索引实体类,我想根据它们的状态从索引中排除一些实体。我的案例我想排除template==null的对象我已经找到并实现了它,但是这个拦截器不工作\调用 这就是我所拥有的 public class WorkDocumentInterceptor implements EntityIndexingInterceptor<WorkDocument> { @Override public IndexingOver

我不熟悉hibernate搜索,我需要在我的应用程序数据库中使用它。 我有几个索引实体类,我想根据它们的状态从索引中排除一些实体。我的案例我想排除template==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);
}
当索引正在运行时,我甚至看不到这个输出,似乎拦截器没有调用

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();

为什么它不起作用?谢谢。

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

只需将hibernate搜索版本从4.1.1更改为4.2.0即可


拦截器按预期工作

条件索引的初始版本现在与质量索引器一起工作。这在HibernateSearch4.2.0.Final中得到了解决。该问题在哈代下跟踪,谢谢回复,我不知道如何回复,但我错过了该问题。
            em.createIndexer(clazz)
                    .purgeAllOnStart(true)
                    .optimizeAfterPurge(true)
                    .optimizeOnFinish(true)
                    .batchSizeToLoadObjects(25)
                    .cacheMode(CacheMode.IGNORE)
                    .threadsToLoadObjects(5)
                    .threadsForIndexWriter(3)
                    .threadsForSubsequentFetching(20)
                    .startAndWait();