Java 对@indexedEmbedded对象id的Lucene查询

Java 对@indexedEmbedded对象id的Lucene查询,java,hibernate,lucene,hibernate-search,Java,Hibernate,Lucene,Hibernate Search,我正在尝试使用org.apache.lucene.search.Query来获取带有@indexedembed对象的所有条目,该对象带有特定的@id id。这在我当前的代码中根本不起作用。我的代码如下: 搜索 FullTextSession fullTextSession = getFullTextSession(); QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEnt

我正在尝试使用org.apache.lucene.search.Query来获取带有@indexedembed对象的所有条目,该对象带有特定的@id id。这在我当前的代码中根本不起作用。我的代码如下:

搜索

FullTextSession fullTextSession = getFullTextSession();
QueryBuilder queryBuilder = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Request.class).get();

org.apache.lucene.search.Query query = queryBuilder.keyword()
                .onField("keyword.id")
                .matching(keywordId)
                .createQuery();

FullTextQuery fullTextQuery = fullTextSession
                .createFullTextQuery(query, Request.class);

return fullTextQuery.list();
请求类

@Entity
@Indexed
public class Request etc etc..

    @ManyToOne
    @IndexedEmbedded
    private Keyword keyword;
@Entity
@Indexed
public class Keyword etc etc..

    @Id
    @GeneratedValue
    private Long id;
关键字类

@Entity
@Indexed
public class Request etc etc..

    @ManyToOne
    @IndexedEmbedded
    private Keyword keyword;
@Entity
@Indexed
public class Keyword etc etc..

    @Id
    @GeneratedValue
    private Long id;
我在执行这段代码时没有收到任何错误,结果只是不限于带有提供id的关键字的请求对象

稍后,我会在org.apache.lucene.search.BooleanQuery中使用它,但即使尝试它本身,它也不起作用。我知道这可能是错误的方法,因此任何建议都将不胜感激


谢谢

索引属性设置不正确,请求类的索引根本没有按应有的方式编制索引。添加了以下代码以修复错误捕获:

<property name="hibernateProperties">
    <props>
        ...
        <prop key="hibernate.search.default.indexBase">/var/lucene/indexes</prop>
        <prop key="hibernate.search.default.directory_provider">filesystem</prop>
        <prop key="hibernate.search.lucene_version">LUCENE_CURRENT</prop>
    </props>
</property>

...
/var/lucene/指数
文件系统
卢塞诺电流

我知道这个问题已经问了很长时间了,但是如果有人因为同样的问题来到这里,这里有一个有效的解决方案-


您说结果不限于具有提供ID的关键字的请求对象,您的意思是其他请求对象(没有具有提供ID的关键字的对象)正在返回吗?您在Luke中尝试过这个查询吗?当我执行这个查询时,我收到了表中的所有实体,这个限制没有任何影响。我没有,您可以将其用于BooleanQuery,或者我应该尝试其他方法吗?我只会尝试查询
关键字。id:
。这是使用queryBuilder还是使用其他初始化方法?这将与该工具一起使用。这是一个检查Lucene操作的无价工具。这并不能解决我的问题,就像你的一样。您确定没有设置任何alse吗?根据我记忆中关于此问题的内容,添加属性解决了我的问题。然而这是很久以前的事了,从那以后我就没有和lucene合作过。尽管@RandomMooCow评论中链接的工具Luke在调试中帮助很大,也许你可以试一试。不幸的是,我不能提供更多的帮助。我找到了解决方案,那就是属性深度。谢谢你的回复!我也有同样的问题。一切正常,但不是通过
@IndexedEmbedded
实体(子实体)的Id进行查询。有人帮忙吗?我还注意到,每次查询
@IndexedEmbedded
实体时,都会触发一个SQL查询。这是正确的行为吗?