`
iwindyforest
  • 浏览: 229970 次
  • 性别: 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>

 

 

 

 

分享到:
评论

相关推荐

    Microsoft.Windows.Cortana_cw5n1h2txyewy.zip

    删除小娜之后,windows桌面的搜索框不能继续使用,只有重新安装小娜才能使用。这里windows不能下载小娜,只能通过重装系统来解决,所以这里提供小娜的文件夹,替换之前误删的文件位置就可以。

    guinsoo:Guinsoo-基于h2数据库的数据库

    全文搜索 纯Java占用空间小:大约2.5 MB的jar文件大小 ODBC驱动程序 详细信息: : 概述 从上到下工作,各层如下所示: JDBC驱动程序。 连接/会话管理。 SQL解析器。 命令执行和计划。 表/索引/约束。 撤消...

    h2database:H2是用Java编写的可嵌入式RDBMS

    欢迎使用Java SQL数据库H2。...多版本并发基于浏览器的控制台应用程序加密的数据库全文搜索纯Java占用空间小:大约2.5 MB的jar文件大小ODBC驱动程序详细信息: : 资料下载或添加到pom.xml : &lt; dependency&gt; &lt; groupId&gt;...

    丽华asp ajax搜索提示代码 v2.1.zip

    丽华asp ajax搜索提示代码 V2.1 index.htm 首页文件 搜索提示演示 字库文件 keyword.mdb 可自行修改或导入专业词汇 h2p.asp 字库汉字转拼音 转换时表内必须有汉字的关键词 h2p.asp?caozuo=all 一次性转化 需...

    查询和总结您的私有文档h2ogpt项目并与本地私有 GPT LLM进行聊天

    5、HYDE(假设文档嵌入)用于基于 LLM 响应增强检索 6、支持多种模型(LLaMa2、Mistral、Falcon、Vicuna、WizardLM。带 AutoGPTQ、4 位/8 位、LORA 等) 7、HF 和 LLaMa.cpp GGML 模型的 GPU 支持,以及使用 HF、...

    多线程爬虫与Elasticsearch搜索引擎实战

    版本1: 用Java编写一个多线程爬虫,完成HTTP请求、HTML解析等工作,得到数据后放入H2数据库中,借助Flyway将建表、添加原始数据的工作等(自动化) ...版本5:借助Elasticsearch编写一个简单的搜索程序

    vue实现百度搜索功能

    本文实例为大家分享了vue实现百度搜索功能的具体代码,供大家参考,具体内容如下 最终效果: ... &lt;h2 xss=removed&gt;百度搜索案例&lt;/h2&gt; &lt;form action=&gt; &lt;input v-model=wd @keyup=keyup($ev

    基于matlab模拟 H2O、H2 CO2 和空气的高精度热力学模型.zip

    1.版本:matlab2014/2019a,内含运行...3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士等教研学习使用 5.博客介绍:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可si信

    基于matlab模拟 H2O、H2 CO2 和空气的高精度热力学模型.zip.zip

    1.版本:matlab2014/2019a,内含运行...3.内容:标题所示,对于介绍可点击主页搜索博客 4.适合人群:本科,硕士等教研学习使用 5.博客介绍:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可si信

    H2aa_2mu2tau_PhDthesis

    使用CMS Run II数据使用μ子和tau轻子搜索最终状态的轻玻色子 另请参见代码文档页面 该存储库仅包含要用于分析的特定代码 安装 可以通过以下方式检出存储库: git clone ...

    spring-dictionary:简单的 WebApp 字典,使用 spring boot、spring-data-jpa 和 hibernate (H2 db)

    Spring词典简单的 WebApp 字典,使用 spring boot、spring-data-jpa 和 hibernate (H2 db)。运行此应用程序的步骤在: config.MainConfiguration#dataSource 中配置数据库设置通过运行启动应用程序:应用程序类通过...

    LHC的125 GeV希格斯玻色子对单重态费米子暗物质搜索的影响

    因此,必须考虑两个标量介体h1和h2,其中h1被标识为已发现的125 GeV希格斯玻色子。 作为一个具体示例,我们考虑在tt + ET通道中进行暗物质(DM)搜索。 根据暗物质的质量和两个标量介体的数量,我们将该过程分为四...

    八数码问题

    y启发式搜索算法(h2(n) = P(n)将牌“不在位”的距离和)P40 y启发式搜索算法(h3(n) = h(n)=P(n)+3S(n)) P46 2. 随机产生或手动输入初始状态,对于同一个初始状态,分别用上面的5种方法进行求解,并对比结果

    h2hapi:用于历史项目中途的Restful API。 无服务器,Flask,DynamoDB

    该解决方案为H2HSite实现了简单的用户管理端点和方法,以检索必要的JWT令牌以进行认证访问并注册新用户。 选择noSQL db是因为期望大多数DB将由缺少任何具体架构的文章/新闻记录占用。要求Python 3.7 NodeJS(用于无...

    乐活网络产品发布系统 2012.rar

    产品搜索:输入关键字,进行产品搜索服务。 后台管理功能: 添加管理员:添加后台管理员; 管理管理员:修改后台用户密码和删除用户; 添加产品类别:添加产品分类,设置前台产品显示方式; 管理产品类别:...

    压缩模式在WCDMA向GSM切换时的应用

    在进行WCDMA和GSM测量时,需要对触发测量的绝对门限TUsed2d和相对门限H2d两个参数进行不断优化,获得容量和切换性能之间的平衡。压缩模式中TGL的长度会影响系统容量和覆盖,相关仿真表明压缩模式的TGL越长,完成GSM...

    Win10删除小娜后搜索无法使用恢复方法

    解压文件到'C:\Windows\SystemApps\Microsoft.Windows.Cortana_cw5n1h2txyewy',即可。没有此文件夹手动创建

    精英H61H-M12 V1.0真正可用BIOS

    精英H61H-M12 V1.0真正可用BIOS 。百度上的是搜索到的是不可用的。刷入会开不了机。这个版本的可以。

Global site tag (gtag.js) - Google Analytics