`
iwindyforest
  • 浏览: 234750 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

h2全文检索

 
阅读更多

 

使用自身提供的全文检索

 

初始化需要用:

 

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,并使用Lucene3.x版本默认情况下,H2版本1.3.x之下。如何做到这一点取决于应用程序,如果您使用的H2控制台,你可以添加了Lucene jar文件的环境变量H2DRIVERSCLASSPATH。要初始化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的全文检索实现内部不同步。如果您在更新数据库的全文检索和查询,同时(直接使用H2Lucene本身的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将有助于防止热重新部署或重新启动服务器时的异常。

 

 

 

错误代码不兼容

 

有一个不符合SpringJdbcTemplateH2版本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中文教程.pdf

    用户还可以在H2中执行包括CSV文件导入导出、数据备份恢复、全文检索以及自定义变量等操作。对于日期和时间的操作,H2支持多种格式和函数,方便用户进行时间相关的数据处理。 H2数据库提供多种方式的升级、备份和...

    h2数据库.pdf

    - **全文搜索**:支持使用Lucene进行全文检索。 - **连接池**:提高应用程序性能的重要特性。 - **Spring框架集成**:Spring支持通过JNDI或直接配置的方式与H2集成。 - **JMX监控**:使用Java Management Extensions...

    H2Database.rar_H2Database高级特性

    H2Database内置了全文搜索引擎,可以对文本数据进行高效的全文检索。 8. **分区表** 分区表功能允许将大表拆分为多个小表,提高查询效率和管理大量数据的能力。 9. **物化视图** 物化视图可以预先计算并存储...

    h2 数据库 客户端

    - H2支持索引,包括B树索引、哈希索引和全文搜索索引,提高查询速度。 - 可以使用EXPLAIN分析查询计划,优化SQL语句。 9. **集成** - H2易于与其他Java应用集成,如Spring框架,只需要配置相应的数据源即可。 -...

    H2Database中文教程

    H2提供了全文检索功能,可以通过`CREATE INDEX`命令创建全文索引,并使用`CONTAINS`或`MATCH AGAINST`进行查询。 ### 用户自定义变量 H2允许定义和使用用户自定义变量,例如在SQL语句中使用`@variable@`。 ### ...

    H2数据库官方文档(English)

    - **全文搜索**(Fulltext Search):提供了如何使用原生全文搜索和Apache Lucene全文搜索进行搜索操作的说明。 - **用户定义变量**(User-Defined Variables):解释了如何在H2数据库中使用用户定义的变量。 - **...

    h2database

    H2数据库提供了丰富的功能,包括但不限于:事务支持(ACID特性)、行级锁定、视图、触发器、存储过程、全文搜索、自定义函数支持以及多种数据类型。此外,H2还具有良好的社区支持和活跃的开发,定期更新和修复问题,...

    h2数据库功能介绍资料

    此外,H2支持全文搜索功能,用户可以选择使用本地全文搜索或Apache Lucene全文搜索。数据库还支持用户自定义变量,日期和时间处理功能,以及与Spring框架的集成。 H2数据库还具有自己的特性列表,包括主要功能和...

    h2 database pdf

    - **Lucene 全文搜索**:通过集成 Lucene 实现更高级的全文检索功能。 #### 用户定义变量 - H2 支持用户定义的变量,可以在 SQL 查询中动态使用这些变量。 #### 日期与时间 - H2 提供了丰富的日期与时间函数,方便...

    20081224-安装配置oracle全文检索

    Oracle全文检索是Oracle数据库系统中的一种高级特性,用于在数据库中的文本数据中执行高效、复杂的全文搜索。在本文中,我们将深入探讨如何安装和配置Oracle Text,以及它所依赖的关键角色和用户。 首先,要使用...

    H2数据库demo展示

    9. **丰富的函数和特性**:H2提供了大量的内置函数和存储过程,如全文搜索、空间数据支持、自定义函数等。 在DEMO中,我们可以看到如何简单地使用H2数据库。通常,引入H2数据库的JAR包后,可以通过Java代码创建...

    内存数据库h2database(h2-2008-11-07)

    6. **强大的功能**:H2支持触发器、存储过程、视图、索引、事务等高级数据库特性,以及全文搜索、空间数据类型等扩展功能。 7. **跨平台**:由于是Java开发,H2可以在任何支持Java的平台上运行,包括Windows、Linux...

    H2Database-SQL语法.pdf

    数据处理语句(Data Manipulation Language, DML)是SQL语法的一部分,包括SELECT、INSERT、UPDATE、DELETE语句,用于从数据库中检索、插入、修改和删除数据。此外,还包括备份(BACKUP)、调用存储过程(CALL)、...

    h2 db数据库

    此外,它还提供了许多实用的扩展,如JSON、Lob、全文搜索等。 5. **易于集成**:H2可以直接嵌入到Java应用中,通过简单的API就能实现数据库的创建、连接和操作,这对于开发人员来说非常方便。 6. **安全**:H2支持...

    H2数据库使用说明英文版

    H2数据库提供了一些高级配置,如支持CSV文件格式进行数据导入导出、全文搜索功能,包括使用Apache Lucene进行搜索、使用用户定义变量来优化查询操作。此外,还提供数据库升级、备份和恢复功能,如通过脚本工具进行...

    h2数据库实战

    文档还提到了H2数据库的高级特性,例如原生全文搜索和使用Lucene作为全文搜索引擎。H2数据库还支持用户自定义变量,方便在SQL查询中使用。日期和时间处理在H2中也是内置支持的。 对于想要深入理解和掌握H2数据库的...

    h2view.zip h2数据库可视化工具,个人开发,bug有点多,请见谅

    3. **数据浏览**:显示表中的数据,支持排序、筛选和搜索功能。 4. **数据操作**:可以插入新记录,更新现有记录,以及删除记录。在新增或编辑数据时,需注意每个单元格填写完成后按回车键才能保存。 5. **SQL查询...

    java h2.pdf

    H2数据库还支持全文搜索功能,文档描述了如何使用原生全文搜索和Lucene全文搜索。 最后,文档提到了H2数据库的特色功能列表,包括主要特性、附加特性、SQL支持、安全性特性以及其他工具和特性。这为用户提供了关于...

    H2数据库讲解(教程)

    理解这些数据类型对于正确存储和检索数据至关重要。 在处理大量数据时,批量导入和导出功能非常实用。"**Java大批量导出数据,格式可以为xml或excel..doc**"会指导你如何利用Java编程接口实现数据的XML或Excel格式...

    H2Viewer(Microsoft HxS格式的帮助文件阅读器)

    《H2Viewer:微软HxS格式帮助文件的解析与阅读》 在信息化时代,软件的帮助文件成为用户理解和掌握软件功能的重要工具。Microsoft HxS(HTML Help System)格式是微软公司推出的一种专用于帮助文件的格式,它以其...

Global site tag (gtag.js) - Google Analytics