繁体   English   中英

Hibernate Search没有正确索引嵌入式集合

[英]Hibernate Search not indexing embedded collections properly

我目前正在开发一个涉及使用Hibernate Search的项目。 目前该项目使用纯SQL进行搜索,我们希望使用文本搜索(需要知道并正确拼写第一个单词可能会令人讨厌)。

架构是产品可以有多个版本,当前版本包含产品的名称。

Public Class Product extends ProgEntity
{
   private List<ProductVersion> versions = new ArrayList<ProductVersion>();
   ...
}

Public Class ProductVersion extends ProgEntity
{
    String productName;
    ...
}

我需要能够根据其名称搜索产品。 我能够通过productName索引ProductVersions而没有什么问题,但索引产品被证明是一个更大的问题。

经过一些研究后,这就是我所拥有的,但是当我将产品更新到数据库时,没有创建索引。

@Entity
@Indexed
Public Class Product extends ProgEntity
{
   @IndexedEmbedded
   private List<ProductVersion> versions = new ArrayList<ProductVersion>();
   ...
}

@Entity
@Embeddable
Public Class ProductVersion extends ProgEntity
{
    @Field
    String productName;
    ...
}

DocumentID是ProgEntity的一部分。 我需要确保,如果我更新产品或产品版本,它将被正确索引,现在似乎没有发生。

关于我做错的任何建议?

您在发布的代码中映射的Product和ProductVersion之间没有关系(例如,多对一,多对一)。 这种关系必须是双向的。 使用@IndexedEmbedded注释Product的集合字段,使用@ContainedIn注释ProductVersion一侧的反向字段,您应该全部设置。

ProductVersion上使用@Entity@Embeddable似乎是错误的。 还有一些JPA注释缺失。 版本集是否映射为@ManyToOne@ElementCollection 你检查过你的hibernate配置和日志文件了吗? 您使用的是哪个目录提供商?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM