休眠搜索 FullTextFilter 缓存不工作

Hibernate Search FullTextFilter cache not working

我有以下实体声明:

@FullTextFilterDefs({
  @FullTextFilterDef(name = "withStock", impl = WithStockFilterFactory.class, cache = FilterCacheModeType.INSTANCE_ONLY),
  @FullTextFilterDef(name = "onlyActive", impl = OnlyActiveFilterFactory.class, cache = FilterCacheModeType.INSTANCE_ONLY),
})
public class Article {

    @Column
    @Field(index = Index.YES, analyze = Analyze.NO, store = Store.NO)
    protected Boolean activo;
}

这是我的过滤器:

public class OnlyActiveFilterFactory {

  private Boolean onlyActive;

  public void setOnlyActive(Boolean onlyActive) {
    this.onlyActive = onlyActive;
  }

  @Factory
  public Query getFilter() {
    List<Term> terms = new ArrayList<>();
    terms.add(new Term("active", "true"));

    if (!onlyActive) {
      terms.add(new Term("active", "false"));
    }

    return new QueryWrapperFilter(new TermsQuery(terms));
  }
}

但是当我执行搜索时一切正常,直到我更改实例的 active 的值,因为无论参数 onlyActive 的值如何,它总是会在任何搜索中返回设置为过滤器;对于其他每个实例都可以正常工作。

在我重建 整个索引 之前,会发生这种情况。我试图在更改它的 active 值后重新索引实体,像这样但没有运气:

FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
fullTextEntityManager.index(article);

有什么想法吗?

没关系, 存储库中更改 active 属性值的方法已用 @Query 注释,因此对数据库的操作不会强制重新索引和缓存更新。