如何删除Hibernate搜索中的所有重复结果?

如何删除Hibernate搜索中的所有重复结果?,hibernate,hibernate-search,infinispan,Hibernate,Hibernate Search,Infinispan,我正在使用Infinispan 6.0.2和Hibernate Search 4.4.0 在开始时,在执行如下查询之后 CacheQuery cq = SearchManager.getQuery(query,Hibernate.class).projection("id"); 我使用cq.list()获取“id” 但是现在结果的数量达到了300.000,因为设计了FODB(不能改变),重复id几乎是29000 我写这篇文章是为了得到“id”: for(int i=0;isetResultTr

我正在使用Infinispan 6.0.2和Hibernate Search 4.4.0

在开始时,在执行如下查询之后

CacheQuery cq = SearchManager.getQuery(query,Hibernate.class).projection("id");
我使用
cq.list()
获取“id”

但是现在结果的数量达到了300.000,因为设计了FODB(不能改变),重复id几乎是29000

我写这篇文章是为了得到“id”:


for(int i=0;isetResultTransformer(Criteria.DISTINCT\u ROOT\u ENTITY)使用DISTINCT。

我在Infinispan中找不到设置resultTransformer的方法。你能给我一个例子吗?criteria2=session.createCriteria(classname.class)。SetProjections(Projections.DISTINCT(Projections.property(“id”))。setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).add(Restrictions.eq(“clientName”,userName)).add(Restrictions.eq(“id”,id));事实上,我在hibernate中看到了这一点。但我在Infinispan中使用hibernate,甚至没有一个名为Criteria的类……ResultTransformer仅适用于正常的hibernate标准,而不适用于hibernate搜索。问题不在于你为什么有这么多重复项,或者你是说这是预期的吗?你能描述完整的用例吗?例如Hibernate为我提供了查询命中的300.000个结果,每个“id”的值都是正确的。但是“id”不是唯一的,所以有290.000个id是重复的。我想知道Infinispan中是否有类似DISTINCT for SQL的方法。我在Hibernate中看到了条件,但我不知道如何在Infinispan中使用。@Hardy
for(int i=0;i<listObject.size();i++)
{
    Object[] rdf = (Object[])listObject.get(i);
    if(!result.contains((String) rdf[0])) 
       result.add((String) rdf[0]);
}