package com.boonya.h2.lucene;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.h2.fulltext.FullTextLucene;
import com.boonya.h2.jdbc.connection.DBConnection;
/**
* MyLucene.java
* 功能:全文搜索[主要有两个类FullText和FullTextLucene]
* @author boonya
* v1.0 2013-03-11
* ----创建全文搜索以及调用:
* CREATE ALIAS IF NOT EXISTS FT_INIT FOR "org.h2.fulltext.FullText.init";
* CALL FT_INIT();
* DROP TABLE IF EXISTS TEST;
* CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR);
* INSERT INTO TEST VALUES(1, 'Hello World');
* CALL FT_CREATE_INDEX('PUBLIC', 'TEST', NULL);
*
* SELECT * FROM FT_SEARCH('Hello', 0, 0); //result: "PUBLIC"."TEST" WHERE "ID"=1
*
* SELECT T.* FROM FT_SEARCH_DATA('hello', 0, 0) FT, TEST T
* WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];
* --------------- 1 Hello World ----------------
*
* --重建全文探索--
* DELETE FROM TEST;
* INSERT INTO TEST VALUES(1, 'Hello World');
* INSERT INTO TEST VALUES(2, 'Goodbye World');
* INSERT INTO TEST VALUES(3, 'Hello Goodbye');
* CALL FT_REINDEX();
* SELECT * FROM FT_SEARCH('hello goodbye', 0, 0);//result:"PUBLIC"."TEST" WHERE "ID"=3
*
* SELECT T.* FROM FT_SEARCH_DATA('hello', 0, 0) FT, TEST T
* WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];
* -------results---------------------
* 1 Hello World
* 3 Hello Goodbye
*/
public class MyLucene {
public void search(String text,int limit,int offset){
Connection conn=DBConnection.getConnection();
ResultSet rs=null;
try {
rs=FullTextLucene.search(conn, text, limit, offset);
try {
ResultSetMetaData meta=rs.getMetaData();
while (rs.next()) {
//System.out.println("--有数据");
for (int i = 0,j=meta.getColumnCount(); i <j; i++) {
System.out.println(meta.getColumnLabel(i+1)+" : "+rs.getString(i+1));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs!=null){
rs.close();
rs=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public void searchData(String text,int limit,int offset){
Connection conn=DBConnection.getConnection();
ResultSet rs=null;
try {
rs=FullTextLucene.searchData(conn, text, limit, offset);
try {
ResultSetMetaData meta=rs.getMetaData();
while (rs.next()) {
//System.out.println("--有数据");
for (int i = 0,j=meta.getColumnCount(); i <j; i++) {
System.out.println(meta.getColumnLabel(i+1)+" : "+rs.getString(i+1));
}
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs!=null){
rs.close();
rs=null;
}
if(conn!=null){
conn.close();
conn=null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyLucene lucene=new MyLucene();
// lucene.search("hello", 10, 0);
lucene.searchData("hello", 0, 0);
}
}
分享到:
相关推荐
H2Database内置了全文搜索引擎,可以对文本数据进行高效的全文检索。 8. **分区表** 分区表功能允许将大表拆分为多个小表,提高查询效率和管理大量数据的能力。 9. **物化视图** 物化视图可以预先计算并存储...
- H2支持索引,包括B树索引、哈希索引和全文搜索索引,提高查询速度。 - 可以使用EXPLAIN分析查询计划,优化SQL语句。 9. **集成** - H2易于与其他Java应用集成,如Spring框架,只需要配置相应的数据源即可。 -...
H2提供了全文检索功能,可以通过`CREATE INDEX`命令创建全文索引,并使用`CONTAINS`或`MATCH AGAINST`进行查询。 ### 用户自定义变量 H2允许定义和使用用户自定义变量,例如在SQL语句中使用`@variable@`。 ### ...
9. **丰富的函数和特性**:H2提供了大量的内置函数和存储过程,如全文搜索、空间数据支持、自定义函数等。 在DEMO中,我们可以看到如何简单地使用H2数据库。通常,引入H2数据库的JAR包后,可以通过Java代码创建...
此外,它还提供了许多实用的扩展,如JSON、Lob、全文搜索等。 5. **易于集成**:H2可以直接嵌入到Java应用中,通过简单的API就能实现数据库的创建、连接和操作,这对于开发人员来说非常方便。 6. **安全**:H2支持...
- **Lucene 全文搜索**:通过集成 Lucene 实现更高级的全文检索功能。 #### 用户定义变量 - H2 支持用户定义的变量,可以在 SQL 查询中动态使用这些变量。 #### 日期与时间 - H2 提供了丰富的日期与时间函数,方便...
H2数据库是一个开源的关系型数据库管理系统...开发者可以利用H2提供的丰富的SQL语法,实现复杂的数据操作和管理。而对Java开发人员来说,可以很容易地把H2数据库集成到自己的应用中,实现数据持久化和业务逻辑的分离。
6. **强大的功能**:H2支持触发器、存储过程、视图、索引、事务等高级数据库特性,以及全文搜索、空间数据类型等扩展功能。 7. **跨平台**:由于是Java开发,H2可以在任何支持Java的平台上运行,包括Windows、Linux...
文档还提到了H2数据库的高级特性,例如原生全文搜索和使用Lucene作为全文搜索引擎。H2数据库还支持用户自定义变量,方便在SQL查询中使用。日期和时间处理在H2中也是内置支持的。 对于想要深入理解和掌握H2数据库的...
总结来说,该文档为用户提供了全面的H2数据库使用指导,从基础的安装、连接、使用,到高级特性如全文搜索和备份还原,再到特定环境的集成,涵盖了H2数据库的方方面面。对于Java开发人员来说,这是一份宝贵的参考资料...
H2数据库支持常见的数据类型,如"**H2Database数据类型.doc**"中所述,包括INT、VARCHAR、DATE等,同时也提供了一些特殊类型,如BINARY和ARRAY。理解这些数据类型对于正确存储和检索数据至关重要。 在处理大量数据...
通过H2View,用户可以实现以下功能: 1. **数据库连接**:输入H2数据库的URL、用户名和密码,即可建立连接。对于内存模式的H2数据库,URL通常为"jdbc:h2:mem:test"。 2. **表管理**:列出数据库中的所有表,支持...
开发者可以通过编写SQL查询语句,从H2数据库中检索相关的账务信息。例如,可以使用SELECT语句结合WHERE子句来筛选特定时间段或特定用户的账单信息。 在Java BSS环境下,H2接口的实现通常依赖于JDBC(Java Database ...
1. **w3ctrs51.h2**:这可能是一个动态链接库(DLL)文件,是IIS中的一个扩展或模块,可能包含了实现特定功能的代码。 2. **下载说明.txt**:这个文件很可能包含了关于如何获取、安装和配置w3ctrs51.h2模块的详细...
【描述】"tested both GUI versions and the console version"意味着h2Pas Conver提供了两种用户界面:图形用户界面(GUI)和命令行界面(Console)。GUI版本通常更便于非专业程序员使用,因为它提供了一个直观的...
- **原生全文搜索**:利用H2内部机制实现全文检索功能。 - **Lucene集成**:通过集成Apache Lucene框架扩展全文搜索能力。 #### CSV支持 - **读取CSV文件**:直接从数据库读取CSV文件内容。 - **导入CSV数据**:将...
全文搜索 纯Java占用空间小:大约2.5 MB的jar文件大小 ODBC驱动程序 详细信息: : 概述 从上到下工作,各层如下所示: JDBC驱动程序。 连接/会话管理。 SQL解析器。 命令执行和计划。 表/索引/约束。 撤消...
HxI 文件通常由Delphi的Help Compiler生成,用于提供类似于Visual Studio的帮助体验,使得开发者可以按关键字搜索,查看API文档,了解组件的使用方法。 2. Indy10.HxS:这是HTML帮助结构文件,它定义了帮助文件的...
通过定义实体类、JPA仓库接口以及控制器,我们实现了数据存储和检索功能。同时,H2数据库的Web控制台提供了直观的界面,方便开发者进行数据操作和调试。这个API模板为后续的功能扩展和集成奠定了基础。