`

H2提供全文搜索实现

H2 
阅读更多
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.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数据库demo展示

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

    h2 db数据库

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

    h2 database pdf

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

    H2Database-SQL语法.pdf

    H2数据库是一个开源的关系型数据库管理系统...开发者可以利用H2提供的丰富的SQL语法,实现复杂的数据操作和管理。而对Java开发人员来说,可以很容易地把H2数据库集成到自己的应用中,实现数据持久化和业务逻辑的分离。

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

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

    h2数据库实战

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

    java h2.pdf

    总结来说,该文档为用户提供了全面的H2数据库使用指导,从基础的安装、连接、使用,到高级特性如全文搜索和备份还原,再到特定环境的集成,涵盖了H2数据库的方方面面。对于Java开发人员来说,这是一份宝贵的参考资料...

    H2数据库讲解(教程)

    H2数据库支持常见的数据类型,如"**H2Database数据类型.doc**"中所述,包括INT、VARCHAR、DATE等,同时也提供了一些特殊类型,如BINARY和ARRAY。理解这些数据类型对于正确存储和检索数据至关重要。 在处理大量数据...

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

    通过H2View,用户可以实现以下功能: 1. **数据库连接**:输入H2数据库的URL、用户名和密码,即可建立连接。对于内存模式的H2数据库,URL通常为"jdbc:h2:mem:test"。 2. **表管理**:列出数据库中的所有表,支持...

    bss.rar_H2 接口_H2接口_java BSS_联通H2_联通bss

    开发者可以通过编写SQL查询语句,从H2数据库中检索相关的账务信息。例如,可以使用SELECT语句结合WHERE子句来筛选特定时间段或特定用户的账单信息。 在Java BSS环境下,H2接口的实现通常依赖于JDBC(Java Database ...

    w3ctrs51.h2

    1. **w3ctrs51.h2**:这可能是一个动态链接库(DLL)文件,是IIS中的一个扩展或模块,可能包含了实现特定功能的代码。 2. **下载说明.txt**:这个文件很可能包含了关于如何获取、安装和配置w3ctrs51.h2模块的详细...

    h2Pas Conver,Delphi转换源文件

    【描述】"tested both GUI versions and the console version"意味着h2Pas Conver提供了两种用户界面:图形用户界面(GUI)和命令行界面(Console)。GUI版本通常更便于非专业程序员使用,因为它提供了一个直观的...

    h2 database description

    - **原生全文搜索**:利用H2内部机制实现全文检索功能。 - **Lucene集成**:通过集成Apache Lucene框架扩展全文搜索能力。 #### CSV支持 - **读取CSV文件**:直接从数据库读取CSV文件内容。 - **导入CSV数据**:将...

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

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

    IndyDocs_10.0.20_H2Help.zip

    HxI 文件通常由Delphi的Help Compiler生成,用于提供类似于Visual Studio的帮助体验,使得开发者可以按关键字搜索,查看API文档,了解组件的使用方法。 2. Indy10.HxS:这是HTML帮助结构文件,它定义了帮助文件的...

    api-springboot2-h2数据库:使用SpringBoot 2和H2数据库开发的Api

    通过定义实体类、JPA仓库接口以及控制器,我们实现了数据存储和检索功能。同时,H2数据库的Web控制台提供了直观的界面,方便开发者进行数据操作和调试。这个API模板为后续的功能扩展和集成奠定了基础。

Global site tag (gtag.js) - Google Analytics