当前位置: 首页 > 知识库问答 >
问题:

Hibernate搜索与循环关系

梁丘诚
2023-03-14

日安。

@Entity
@Table(name="EntityDO")
public class EntityDO {
    @Id
    private Long id;

    @Column(nullable = false)
    private String name;

    @OneToMany(mappedBy = "parentEntity")
    private Set<EntityDO> ownedEntities;

    @ManyToOne
    @JoinColumn(name="PARENT_ID", nullable=true)
    private EntityDO parentEntity;

    ...
}

我的想法是:

>

  • 我需要递归地索引被索引实体的'name'成员+实体父实体的'name'+forther等,这样它们就会进入同一个lucene文档的字段。

    然后,我将能够在一个字段上创建一个简单的查询,以检索所有需要的实体。

    事实上,我对第1点有意见。@indexeDembedded不适合这里,因为循环关系和空前缀是禁止的(我不希望实体的名称和它们的父母在不同的字段中)。

    是否可以以自定义的方式进行实体索引?或者也许我最初的想法是错误的,完全有另一种方法来解决这些问题?

  • 共有1个答案

    公羊晟
    2023-03-14

    如果希望将父名称也索引到字段名中,可以编写自己的自定义桥接器--http://docs.jboss.org/hibernate/stable/search/reference/en-us/html_single/#D0E4426。您必须小心的一件事是检测到任何循环依赖关系。

    如果您有一个给定的最大深度,您也可以只使用@indexedembedded,并在查询构建时为配置的最大深度以上的字段添加查询术语。此解决方案是否可行将取决于您希望索引的深度。对于jsut的几个级别,我更喜欢这个选项而不是自定义桥接器。

     类似资料:
    • 我使用< code > Hibernate Search 4 . 5 . 1 编写了< code>Spring web-app。当我尝试搜索时,它返回一个条目列表。我认为索引中的问题。用于索引的目录已创建,但实体保存文件后,目录中的文件不变。 这是我的Spring配置文件 我的实体文件

    • 我想有开关情况循环我的九个菜单,在那里我可以在任何给定的一个和菜单跳转到下一个随机选择,现在它目前旋转的顺序,无论我在哪里点击。

    • 我真的被困在这件事上了,我很想得到你的帮助 我正在尝试编写一个带有签名的方法: 该方法以循环排序的二维数组和搜索num的值作为参数获取。如果值num在mat数组中,则该方法返回true。如果num值不在mat数组中,则该方法返回false。 如果第1季度的所有值都比第2季度的值小,第2季度的值比第3季度的值小,第3季度的值比第4季度的值小,那么该数组就是圆形的。 例如,以下数组是循环排序的: 如果

    • 我已经完成了名称索引。它包含椅子、椅子等数据。 当我尝试用“cha”搜索时,它不会返回任何椅子。这是返回“毛毯”,我期待的文件有椅子。 下面是我的代码: 搜索请求: 搜索响应: } 映射: 我该怎么解决这个问题? 谢谢,Sri

    • 我正在使用Hibernate Search/Lucene Intégration开发一个J2E应用程序。我索引文档(和其他实体),并希望对其进行不区分重音的搜索(内容和类的字段)。 这样做好吗?是否没有param或conf属性让FrenchAnalyzer忽略重音? 谢谢

    • 我正在使用Cosmos DB,并有一个具有以下简化结构的文档: 我的问题是-我有一个这些文档的数组,需要搜索以查看它是否与我的搜索词匹配。例如,如果用户输入,我希望和都返回。 所以目前我将每个文档推送到一个数组中并执行以下操作: 每个文档的 、< code>id2和< code>id3。 使用cosmosDB,我使用SQL,代码如下: 这有效地将集合中的每个文档放入一个数组中,以手动执行上述搜索。