Lucene查询@indexedEmbedded对象ID

tvz2xvvm  于 2022-11-07  发布在  Lucene
关注(0)|答案(2)|浏览(165)

我试图使用一个org.apache.lucene.search.Query来获取所有带有Object @indexedEmbedded和某个@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;

关键字.class

@Entity
@Indexed
public class Keyword etc etc..

    @Id
    @GeneratedValue
    private Long id;

在执行这段代码时,我没有收到任何错误,结果并不局限于具有所提供id的关键字的Request对象。
稍后我将它与org.apache.lucene.search.BooleanQuery结合使用,但即使尝试它本身也不起作用。我意识到这可能是错误的方法,因此任何建议都将受到感谢。
谢谢你!

wi3ka0sx

wi3ka0sx1#

未正确设置索引属性,请求类的索引只是未按应有的方式进行索引。添加了以下代码以修复此错误:

<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>
11dmarpk

11dmarpk2#

我知道这个问题已经很久没有被问到了,但是如果有人因为同样的问题来到这里,这里有一个解决方案--
https://stackoverflow.com/a/58499826/3709922

相关问题