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

标签 java jpa full-text-search eclipselink h2

在我的项目中,我使用嵌入式 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 中创建索引和查询?请举个例子。

最佳答案

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

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

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

关于java - 使用 JPA (Eclipselink) 在 H2 数据库中执行全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15495875/

相关文章:

ruby-on-rails - 将搜索添加到 Ruby on Rails - 简单的问题

java - 为什么 RMI 客户端需要在类路径中包含 stub ?

Java表达式语言投影集合中的每个元素获取其他类型的新对象

spring-boot - 我们可以替换 Spring JPA @Query 中的等于、大于或小于运算符吗?

java - QueryDSL 和 JPA 2.1 实体图

full-text-search - CRM 2011 中的全文搜索

Java : SimpleDateFormat - Unable to parse a string to a date of desired format

java 所选项目数组列表的索引

jpa - 通过未标记为级联 PERSIST 的关系找到了新对象

mysql - 在 MySQL DB 的其他列上使用 ORDER BY 进行全文搜索非常慢