`

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);
	}

}

分享到:
评论

相关推荐

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

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

    vue实现百度搜索功能

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

    data-processing-app:数据处理管道

    科技栈Spring Boot-用作基础Spring Data Redis-提供简单的配置以及从Spring应用程序访问Redis和消息传递Redis-用于存储和检索消息H2-用作内存数据库Websockets-用于将消息推送到正在监听的Web浏览器SockJS.js-...

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

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

    mongo-java-server:使用有线协议的Java中的MongoDB伪实现

    某些功能尚未实现,例如全文搜索或地图/缩小。 将以下Maven依赖项添加到您的项目中: &lt; dependency&gt; &lt; groupId&gt;de.bwaldvogel&lt;/ groupId&gt; &lt; artifactId&gt;mongo-java-server&lt;/ artifactId&gt; &lt; version&gt;1.37.0...

    八数码问题

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

    JS实现类似51job上的地区选择效果示例

    本文实例讲述了JS实现类似51job上的地区选择效果。分享给大家供大家参考,具体如下: &lt;!DOCTYPE html&gt; &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt; &lt;head&gt;&lt;title&gt;地区选择效果&lt;/title&gt...

    literate-giggle

    检索给定帐号的交易列表-/ banking / transactions / {accountNumber}内容协商-接受JSON和XML 设置 作为常规Spring Boot应用执行项目 该项目使用H2内存数据库作为数据存储库。 已启用H2控制台以查看表。 在上访问...

    Python实现博客站点url实时推送至百度与Linux定时任务

    之前写过一篇关于【Hexo】...可转至 https://ziyuan.baidu.com/college/courseinfo?id=267&page=2#h2_article_title9 ,百度搜索资源平台查看链接提交方式的效果差异: 主动推送:最为 快速 的提交方式,建议您将站点当

    浮点vfdsfJAVA实现链表,双向链表.txtJAVA实现链表,双向链表.txt

    &lt;a href="http://download.csdn.net/advanced_search" &gt;&lt;span&gt;高级搜索&lt;/span&gt;&lt;/a&gt; (this);"&gt; &lt;!-- //nav --&gt; &lt;!-- breadcrumb navigation --&gt; &lt;div class="way_nav"&gt;&lt;a href="/"&gt;下载...

    Jfinalplugin,angularjfinal-angular-icedog.zip

    并提供akka异步执行集成,多数据源自动orm映射,flyway数据库脚本升级, shiro 权限系统 freemarker-shiro标签支持,以及其他改进 使用angularjs作为前端框架, 以及 bootstrap requireJs+coffeescript+less...

    基于springboot的简单校园二手商城系统源码+项目说明(毕设).zip

    4、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 &lt;p&gt;shopping是一个面向校园的二手商城交易系统,本系统用Java编写, 该系统的意义在于可以为同学提供一个二手交易平台 ...

    8PuzzleGameSovler:使用python自动解决八个益智游戏

    在此python程序中,我实现了以下搜索算法: 广度优先搜索(BFS) 下降山攀登 一种* 对于Descent Hill Climbing和A *算法,我添加了以下启发式函数: H1():算出放置的瓷砖数 H2():曼哈顿瓷​​砖到位的...

    java源码分享

    基于spring boot体系,原生集成持久化(默认H2 DB,通过配置方式实现MongoDB、mysql等常用关系数据库的支持)、缓存(默认Caffeine、支持配置参数的Hazelcast、redis等)和搜索(默认Lucene,支持配置参数的Elastic...

    Catalogo-de-Produtos:产品目录,可以在其中创建,更改,删除和列出注册的产品

    Java-产品目录该服务是使用Java 11开发的,它包含以下请求的实现: HTTP动词资源路径描述邮政创建产品放 更新产品得到 通过ID搜索产品得到全部商品一览得到过滤产品清单删除 删除产品资料库在此应用程序中, H2库...

    答题微信小程序服务端.zip

    基于 Spring Boot ,尝试 Spring WebFlux ,数据源为 H2(开发配置)、MySQL(生产配置) 微信小程序是腾讯公司基于微信平台推出的一种轻量级应用形态,它无需用户下载安装即可在微信内直接使用。自2017年正式上线...

    atac_nn:神经网络的实现,以估计公交车的等待时间

    atac_nn 神经网络的实现,以估计公交车的等待时间 每分钟的数据都从两个数据源中检索: : ,这些数据经过规范化,保存在h2数据库中,用于训练神经网络

    test-job:包含邮政编码搜索,地址CRUD和流实现的项目

    H2数据库作为内存数据库构建Maven Hamcrest用于测试断言Spring测试进行测试重新登录到应用程序日志Spring Boot通过促进Spring配置来提高开发效率。 作为应用程序服务器,我使用了内置的Spring Boot 项目遵循MVC架构...

    addressesTest:使用ZipCode的简单地址位置API

    使用内存数据库(H2)实现对CEP的搜索。 此应用程序是出于测试目的而开发的。 该应用程序是使用spring-boot开发的,以促进应用程序在独立基础上的使用以及部署到应用程序服务器上的使用。 开发是基于TDD和DDD技术...

    jfinalpluginsdreampie-jfinal.zip

    dreampie-jfinal 使用JFinal框架,并提供akka异步执行集成,多数据源自动orm映射,flyway数据库脚本升级,shiro 权限系统 freemarker支持,以及其他改进 bootstrap前端 该项目剥离出的框架jfinal-dreampie,大家...

Global site tag (gtag.js) - Google Analytics