gpt4 book ai didi

java - 通过注释映射实体的 Hibernate Search 的替代方案

转载 作者:行者123 更新时间:2023-12-01 17:56:46 27 4
gpt4 key购买 nike

据我所知,没有XML 替代方案可以为Hibernate 搜索映射实体。不过,使用 XML 配置进行搜索可能不是一个好主意。但在我的具体情况下,我有一个 gradle 多模块 Spring 项目,例如 -

  • common:包含通用实体和服务
  • 爬虫:它使用通用实体并拥有自己的服务
  • 搜索:这也使用通用实体并包含搜索相关服务

这不是一个单一的项目,而是我从中生成单独的war,例如crawler.warsearch.war。所以你看我需要对所有单独的模块使用通用实体,从而单独生成 war 。因此,不应期望将 Hibernate Search 映射注释直接放在公共(public)实体中。

现在我想知道在搜索模块中导入公共(public)实体时,有什么方法可以将它们与 Hibernate Search 注释一起注入(inject)吗?

[非常感谢任何其他与项目结构相关的建议或建议]

提前致谢。

最佳答案

如文档中所述,您可以使用 programmatic mapping API .

基本上,在您的“搜索”项目中,您必须编写一个定义映射的类:

public class MyAppSearchMappingFactory {
@Factory
public SearchMapping getSearchMapping() {
SearchMapping mapping = new SearchMapping();
mapping
.analyzerDef( "en", StandardTokenizerFactory.class )
.filter( LowerCaseFilterFactory.class )
.filter( EnglishPorterFilterFactory.class )
.entity(Address.class).indexed()
.property("addressId", ElementType.METHOD)
.documentId()
.name("id")
.property("street1", ElementType.METHOD)
.field()
.analyzer("en")
.store(Store.YES)
.field()
.name("address_data")
.analyzer("en");
return mapping;
}
}

然后配置 Hibernate Search 以使用此类作为映射源,如下所示。

  • 如果您使用 .properties 文件进行 Hibernate 相关配置:

    hibernate.search.model_mapping = com.acme.MyAppSearchMappingFactory
  • 如果您使用 persistence.xml 文件进行 Hibernate 相关配置:

    <persistence ...>
    <persistence-unit name="...">
    ...
    <properties>
    <property name="hibernate.search.model_mapping"
    value="com.acme.MyAppSearchMappingFactory"/>
    </properties>
    </persistence-unit>
    </persistence>

关于java - 通过注释映射实体的 Hibernate Search 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44149593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com