休眠搜索的替代方法 通过注释映射实体



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

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

这不是一个单一的项目,而是我从中生成单独的战争,如crawler.warsearch.war。所以你看我需要对所有单独的模块使用公共实体,从而单独生成战争。因此,不应期望直接在公共实体中使用休眠搜索映射注释。

现在我想知道在搜索模块中导入公共实体时,有什么方法可以将它们与休眠搜索注释融合在一起?

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

提前谢谢。

如文档中所述,您可以使用编程映射 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;
}
}

然后将休眠搜索配置为使用此类作为映射的源,如下所示。

  • 如果您将.properties文件用于与休眠相关的配置:

    hibernate.search.model_mapping = com.acme.MyAppSearchMappingFactory
    
  • 如果您将persistence.xml文件用于与休眠相关的配置:

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

最新更新