使用 JPA (Eclipselink) 在 H2 数据库中执行全文搜索

Posted

技术标签:

【中文标题】使用 JPA (Eclipselink) 在 H2 数据库中执行全文搜索【英文标题】:Perform a fulltext search in H2 database using JPA (Eclipselink) 【发布时间】:2013-03-19 09:38:58 【问题描述】:

在我的项目中,我使用嵌入式 H2 数据库和 JPA (eclipselink)。 我需要做这样的查询:SELECT * FROM products WHERE title like '%the_name%' 前导 % 消除了使用索引,因此 H2 执行全表扫描。我必须提高该查询的性能。我发现的可能解决方案是在该列上创建全文索引并进行全文搜索。 必须使用以下参数创建数据库:

properties.put("eclipselink.ddl-generation", "create-tables");
properties.put("eclipselink.ddl-generation.output-mode", "database");

如何使用 JPA 和 H2 做到这一点?如何从 JPA 制作索引和查询?请举个例子。

【问题讨论】:

【参考方案1】:

您可以执行自己的 DDL 来创建全文索引,既可以通过自己的脚本,也可以在应用启动时通过 JPA,例如使用 SessionCustomizer 或 SessionEvent。

要调用全文函数,您可以使用 JPQL FUNC 或 FUNCTION 运算符。

看, How to use full text search feature of H2 database in java?

【讨论】:

以上是关于使用 JPA (Eclipselink) 在 H2 数据库中执行全文搜索的主要内容,如果未能解决你的问题,请参考以下文章

JPA 使用指南 /Eclipselink/JPA 实体生成器

在测试环境中使用 Eclipselink 和 h2 生成序列时出现异常

JPA 从 EclipseLink 到哪个提供商?

JPA + EclipseLink+ HSQLDB 不创建表

在 OSGI (Karaf) 中使用 EclipseLink JPA

JPA - EclipseLink - 如何更改默认模式