7.4.3.5. 检索分析器


当在域模型中使用了多个分析器时,可以检索分析器,以便从医疗或手机近似中受益。在这种情况下,使用相同的分析器来构建查询。或者,使用 Hibernate Search 查询 DSL,它会自动选择正确的分析器。请查看

无论您是使用 Lucene 编程 API,还是 Lucene 查询解析器,您都可以检索给定实体的范围分析器。有作用域分析器是一个分析器,它根据字段索引来应用正确的分析器。请记住,可以在给定实体上定义多个分析器,每个实体都在单个字段上工作。一个作用域分析器可将所有这些分析器统一到上下文感知分析器中。尽管该理论似乎比较复杂,但在查询中使用正确的分析器非常简单。

注意

当您对子实体使用编程映射时,只能查看子实体定义的字段。从父实体继承的字段或方法(使用 @MappedSuperclass 标注)不可配置。要配置从父实体继承的属性,可覆盖子实体中的 属性,或者为父实体创建编程映射。这模拟了注解的使用,除非子实体中重新定义了父实体的字段或方法。

示例:构建全文本查询时使用 Scoped Analyzer

org.apache.lucene.queryParser.QueryParser parser = new QueryParser(
    "title",
    fullTextSession.getSearchFactory().getAnalyzer( Song.class )
);

org.apache.lucene.search.Query luceneQuery =
    parser.parse( "title:sky Or title_stemmed:diamond" );

org.hibernate.Query fullTextQuery =
    fullTextSession.createFullTextQuery( luceneQuery, Song.class );

List result = fullTextQuery.list(); //return a list of managed objects
Copy to Clipboard Toggle word wrap

在上例中,歌曲标题按照两个字段索引:标准分析器在字段 标题中 使用,greject _stemmed 字段中则使用一个适当的 分析器。通过使用搜索工厂提供的分析器,查询会根据目标字段使用适当的分析器。

注意

您还可以使用 searchFactory.getAnalyzer(String)根据定义名称检索 @Analyzer Def 定义的分析器。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat