使用自身提供的全文检索
初始化需要用:
CREATE ALIAS IF NOT EXISTS FT_INIT FOR "org.h2.fulltext.FullText.init"; CALL FT_INIT();
你需要你想用它来初始化它在每个数据库中。之后,您可以创建全文索引的表使用:
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR); INSERT INTO TEST VALUES(1, 'Hello World'); CALL FT_CREATE_INDEX('PUBLIC', 'TEST', NULL);
Schema名称,Table的名称, Column的列名(以逗号分隔)是可选的,在这种情况下,所有的列上都会有索引。该索引是实时更新的, 搜索索引,使用下面的查询:
SELECT * FROM FT_SEARCH('Hello', 0, 0);
这将产生一个结果集,其中包含的查询需要检索的数据:
QUERY: "PUBLIC"."TEST" WHERE "ID"=1
要获得原始数据,使用
SELECT * FROM FT_SEARCH_DATA('Hello', 0, 0);
结果包含的列
SCHEMA(架构),TABLE(表名),COLUMNS(列名的数组),KEYS(列值的数组)。
要加入一个表,使用中:
SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];
您也可以在Java应用程序中调用索引:
org.h2.fulltext.FullText.search(conn, text, limit, offset); org.h2.fulltext.FullText.searchData(conn, text, limit, offset);
使用Lucene的全文检索
要使用Lucene全文搜索,你需要的Lucene的库中的类路径。目前2.x版本的Apache Lucene默认情况下,H2版本1.2.x,并使用Lucene的3.x版本默认情况下,H2版本1.3.x之下。如何做到这一点取决于应用程序,如果您使用的H2控制台,你可以添加了Lucene jar文件的环境变量H2DRIVERS或CLASSPATH。要初始化Lucene的全文搜索的数据库,请致电:
CREATE ALIAS IF NOT EXISTS FTL_INIT FOR "org.h2.fulltext.FullTextLucene.init";
CALL FTL_INIT();
你需要你想用它来初始化它在每个数据库中。之后,您可以创建全文索引的表使用:
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR);
INSERT INTO TEST VALUES(1, 'Hello World');
CALL FTL_CREATE_INDEX('PUBLIC', 'TEST', NULL);
公众的架构的名称,测试表的名称。列名的列表(以逗号分隔)是可选的,在这种情况下,所有的列上都有索引。该指数是实时更新的。搜索索引,使用下面的查询:
SELECT * FROM FTL_SEARCH('Hello', 0, 0);
这将产生一个结果集,其中包含的查询需要检索的数据:
QUERY: "PUBLIC"."TEST" WHERE "ID"=1
要获得原始数据,使用FTL_SEARCH_DATA('Hello', 0, 0);。结果包含的列SCHEMA(架构),TABLE(表名),COLUMNS(数组的列名),KEYS(对象数组)。要加入一个表,使用中:SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];
您也可以在Java应用程序中调用索引:
org.h2.fulltext.FullTextLucene.search(conn, text, limit, offset);
org.h2.fulltext.FullTextLucene.searchData(conn, text, limit, offset);
Lucene的全文搜索支持搜索仅在特定的列。列名必须是大写字母(但如果原来的列双引号)。对于列名用下划线(_)开始,另一个需要添加下划线。示例:
CREATE ALIAS IF NOT EXISTS FTL_INIT FOR "org.h2.fulltext.FullTextLucene.init";
CALL FTL_INIT();
DROP TABLE IF EXISTS TEST;
CREATE TABLE TEST(ID INT PRIMARY KEY, FIRST_NAME VARCHAR, LAST_NAME VARCHAR);
CALL FTL_CREATE_INDEX('PUBLIC', 'TEST', NULL);
INSERT INTO TEST VALUES(1, 'John', 'Wayne');
INSERT INTO TEST VALUES(2, 'Elton', 'John');
SELECT * FROM FTL_SEARCH_DATA('John', 0, 0);
SELECT * FROM FTL_SEARCH_DATA('LAST_NAME:John', 0, 0);
CALL FTL_DROP_ALL();
Lucene的全文检索实现内部不同步。如果您在更新数据库的全文检索和查询,同时(直接使用H2或Lucene本身的Java API),您需要确保操作正确同步。如果是这样的情况下,您可能会收到例外,如org.apache.lucene.store.AlreadyClosedException: this IndexReader is closed。
使用Spring
使用TCP服务器
使用下面的配置来启动和停止使用Spring框架的H2 TCP服务器:
<bean id = "org.h2.tools.Server"
class="org.h2.tools.Server"
factory-method="createTcpServer"
init-method="start"
destroy-method="stop">
<constructor-arg value="-tcp,-tcpAllowOthers,true,-tcpPort,8043" />
</bean>
destroy-method将有助于防止热重新部署或重新启动服务器时的异常。
错误代码不兼容
有一个不符合Spring的JdbcTemplate和H2版本1.3.154,更新的,因为一个变化中的错误代码。这将导致JdbcTemplate中未检测到重复的关键条件,所以DataIntegrityViolationException而不是被抛出DuplicateKeyException。的问题SPR-8235。解决方法是添加下面的XML文件的根目录开始:
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
>
<import resource="classpath:org/springframework/jdbc/support/sql-error-codes.xml"/>
<bean id = "H2" class="org.springframework.jdbc.support.SQLErrorCodes">
<property name="badSqlGrammarCodes">
<value>
42000,42001,42101,42102,42111,42112,42121,42122,42132
</value>
</property>
<property name="duplicateKeyCodes">
<value>23001,23505</value>
</property>
<property name="dataIntegrityViolationCodes">
<value>22003,22012,22025,23000</value>
</property>
<property name="dataAccessResourceFailureCodes">
<value>90046,90100,90117,90121,90126</value>
</property>
<property name="cannotAcquireLockCodes">
<value>50200</value>
</property>
</bean>
</beans>
相关推荐
H2Database内置了全文搜索引擎,可以对文本数据进行高效的全文检索。 8. **分区表** 分区表功能允许将大表拆分为多个小表,提高查询效率和管理大量数据的能力。 9. **物化视图** 物化视图可以预先计算并存储...
用户还可以在H2中执行包括CSV文件导入导出、数据备份恢复、全文检索以及自定义变量等操作。对于日期和时间的操作,H2支持多种格式和函数,方便用户进行时间相关的数据处理。 H2数据库提供多种方式的升级、备份和...
- **全文搜索**(Fulltext Search):提供了如何使用原生全文搜索和Apache Lucene全文搜索进行搜索操作的说明。 - **用户定义变量**(User-Defined Variables):解释了如何在H2数据库中使用用户定义的变量。 - **...
- **全文搜索**:支持使用Lucene进行全文检索。 - **连接池**:提高应用程序性能的重要特性。 - **Spring框架集成**:Spring支持通过JNDI或直接配置的方式与H2集成。 - **JMX监控**:使用Java Management Extensions...
- H2支持索引,包括B树索引、哈希索引和全文搜索索引,提高查询速度。 - 可以使用EXPLAIN分析查询计划,优化SQL语句。 9. **集成** - H2易于与其他Java应用集成,如Spring框架,只需要配置相应的数据源即可。 -...
H2提供了全文检索功能,可以通过`CREATE INDEX`命令创建全文索引,并使用`CONTAINS`或`MATCH AGAINST`进行查询。 ### 用户自定义变量 H2允许定义和使用用户自定义变量,例如在SQL语句中使用`@variable@`。 ### ...
H2数据库提供了丰富的功能,包括但不限于:事务支持(ACID特性)、行级锁定、视图、触发器、存储过程、全文搜索、自定义函数支持以及多种数据类型。此外,H2还具有良好的社区支持和活跃的开发,定期更新和修复问题,...
此外,H2支持全文搜索功能,用户可以选择使用本地全文搜索或Apache Lucene全文搜索。数据库还支持用户自定义变量,日期和时间处理功能,以及与Spring框架的集成。 H2数据库还具有自己的特性列表,包括主要功能和...
- **Lucene 全文搜索**:通过集成 Lucene 实现更高级的全文检索功能。 #### 用户定义变量 - H2 支持用户定义的变量,可以在 SQL 查询中动态使用这些变量。 #### 日期与时间 - H2 提供了丰富的日期与时间函数,方便...
Oracle全文检索是Oracle数据库系统中的一种高级特性,用于在数据库中的文本数据中执行高效、复杂的全文搜索。在本文中,我们将深入探讨如何安装和配置Oracle Text,以及它所依赖的关键角色和用户。 首先,要使用...
9. **丰富的函数和特性**:H2提供了大量的内置函数和存储过程,如全文搜索、空间数据支持、自定义函数等。 在DEMO中,我们可以看到如何简单地使用H2数据库。通常,引入H2数据库的JAR包后,可以通过Java代码创建...
6. **强大的功能**:H2支持触发器、存储过程、视图、索引、事务等高级数据库特性,以及全文搜索、空间数据类型等扩展功能。 7. **跨平台**:由于是Java开发,H2可以在任何支持Java的平台上运行,包括Windows、Linux...
3. **数据浏览**:显示表中的数据,支持排序、筛选和搜索功能。 4. **数据操作**:可以插入新记录,更新现有记录,以及删除记录。在新增或编辑数据时,需注意每个单元格填写完成后按回车键才能保存。 5. **SQL查询...
数据处理语句(Data Manipulation Language, DML)是SQL语法的一部分,包括SELECT、INSERT、UPDATE、DELETE语句,用于从数据库中检索、插入、修改和删除数据。此外,还包括备份(BACKUP)、调用存储过程(CALL)、...
此外,它还提供了许多实用的扩展,如JSON、Lob、全文搜索等。 5. **易于集成**:H2可以直接嵌入到Java应用中,通过简单的API就能实现数据库的创建、连接和操作,这对于开发人员来说非常方便。 6. **安全**:H2支持...
H2数据库提供了一些高级配置,如支持CSV文件格式进行数据导入导出、全文搜索功能,包括使用Apache Lucene进行搜索、使用用户定义变量来优化查询操作。此外,还提供数据库升级、备份和恢复功能,如通过脚本工具进行...
文档还提到了H2数据库的高级特性,例如原生全文搜索和使用Lucene作为全文搜索引擎。H2数据库还支持用户自定义变量,方便在SQL查询中使用。日期和时间处理在H2中也是内置支持的。 对于想要深入理解和掌握H2数据库的...
H2数据库还支持全文搜索功能,文档描述了如何使用原生全文搜索和Lucene全文搜索。 最后,文档提到了H2数据库的特色功能列表,包括主要特性、附加特性、SQL支持、安全性特性以及其他工具和特性。这为用户提供了关于...
理解这些数据类型对于正确存储和检索数据至关重要。 在处理大量数据时,批量导入和导出功能非常实用。"**Java大批量导出数据,格式可以为xml或excel..doc**"会指导你如何利用Java编程接口实现数据的XML或Excel格式...
《H2Viewer:微软HxS格式帮助文件的解析与阅读》 在信息化时代,软件的帮助文件成为用户理解和掌握软件功能的重要工具。Microsoft HxS(HTML Help System)格式是微软公司推出的一种专用于帮助文件的格式,它以其...