lucene中给数据库做索引

       好久没有写博客了,今天写一点,其实也不想写,最近在整搜索引擎相关的东西,要对数据库建立索引,lucene可以很方便的对文本文件,包括pdf等文件做索引,当然数据库也可以哇。

       废话不说,贴代码吧:

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.RAMDirectory;
import org.wltea.analyzer.lucene.IKAnalyzer;

import com.patent.common.connectionManage.ConnectionManage;
import com.patent.common.connectionManage.ResultManage;

/**
 * @desc 专利数据索引管理类
 * @author 陈建国
 *
 */
public class IndexManage {
	private Directory ramdDirectory = null; //内存索引目录
	private Directory fsdDirectory = null;//文件索引目录
	private IndexWriter iwriter_ram = null; //
	private IndexWriter iwriter_fsd = null; //
	private ResultSet Result = null;//
	private ConnectionManage connManage = null;
	private int currectPage = 0 ;
	/**
	 * @desc 初始化lucene索引。
	 */
	public IndexManage(){
	
		try {
			fsdDirectory = FSDirectory.getDirectory("E:/temp/index/");
			iwriter_fsd = new IndexWriter(fsdDirectory,new IKAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);
			connManage = new ConnectionManage();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取结果集
	 * @return
	 */
	public void getResult(int currectPage){
		ramdDirectory = new RAMDirectory();
		try {
			iwriter_ram = new IndexWriter(ramdDirectory,new IKAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);
			
			ResultManage rsManage = new ResultManage(connManage.getConnection(),currectPage);
			Result = rsManage.getResultSet();	
			int k = 0;
			while(Result.next()){
				//System.out.println(currectPage+" "+k++);
				//添加document
				Document doc = new Document();
				doc.add(new Field("PatentNo",Result.getString("PatentNo"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("PublicationDate",Result.getString("PublicationDate"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("Title",Result.getString("Title"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("Inventors",Result.getString("Inventors"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("ANA",Result.getString("ANA"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("SerialNo",Result.getString("SerialNo")+Result.getString("SeriesCode"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("Filed",Result.getString("Filed"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("USCurrentClass",Result.getString("USCurrentClass"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("InternlClass",Result.getString("InternlClass"),Field.Store.YES,Field.Index.ANALYZED));
				doc.add(new Field("Abstract",Result.getString("Abstract"),Field.Store.YES,Field.Index.ANALYZED));
				
				iwriter_ram.addDocument(doc);
				
			}
			
			iwriter_ram.commit();
			iwriter_fsd.addIndexes(new Directory[]{ramdDirectory});
			
		} catch (CorruptIndexException e) {
			e.printStackTrace();
		} catch (LockObtainFailedException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 关闭indexWriter
	 */
	public void close(){
		if(iwriter_fsd != null){
			try {
				iwriter_fsd.commit();
				iwriter_fsd.close();
			} catch (CorruptIndexException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
		}
	}
	
}

其实么,说白了就是将数据库中的数据取出来然后构建document。不过今天遇到一个大问题了,取那些百万级别的数据到底怎么办,感觉速度好慢啊。

lucene索引并搜索mysql数据库 由于对lucene比较感兴趣,本人在网上找了点资料,终于成功地用lucene对mysql数据库进行索引创建并成功搜索,先总结如下:     首先介绍一个jdbc工具类,用于得到Connection对象: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLExce 阅读详情

相关推荐

Lucene多线程创建索引及多目录下查询索引

目的:公司最近要求建立对数据库内多表的索引文件,来实现对数据库数据处理的全文检索。 表有多个,内容风别是不同表内的字段。选用了IK分词和Lucene实现。 多线程创建索引 多区域联合查询索引

富士山不可私有,你捉摸不透。 3504

1.用lucene为数据库建索引

1.用lucene为数据库建索引 一,lucene中比较基础的建立索引步骤(资料:http://www.ourys.com/post/lucene3-0_database_index.html) 1.指定目录索引 2.创建Directory对象(参数是存放索引的File类型,根据File的存放地点选择创建类) 3.创建indexWriter对象,参数(Directory对象

chpswg的专栏 1682

Lucene 倒排索引原理

1 前言 Lucene 作为 Apache 开源的一款搜索工具,一直以来是实现搜索功能的神兵利器,现今火热的 Solr 和 Elasticsearch 均基于该工具包进行开发,我们搜索召回组这边也是基于 Lucene 实现了一套索引构建机制,用于酒店搜索、门票搜索、大搜等搜索相关业务。 而 Lucene 之所以能在搜索中发挥至关重要的作用正是因为倒排索引。 因此,本文将介绍一下倒排索引的概念以及倒排索引在 Lucene 中的实现。 2 基本原理 2.1 什么是倒排索引 搜索的核心需求是全文检索,全文检索简单

去哪儿网技术沙龙 1436

用Lucene[1].net对数据库建立索引及搜索+

cs代码 usingSystem;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Drawing;usingSystem.Web;usingSystem.Web.SessionState;usin...

weixin_30409849的博客 116

Lucene简介与数据库索引

Lucence  每个技术都会有他存在的原因:解决实际生活中的问题和需求。个人认为Lucene(全文检索引擎工具包)就是迎合了互联网的发展解决在大量数据中准确的查询问题,关键词的划分、关键词出现的次数、包含关键词的目标文档排序等等。 一、简介  Lucene是全文检索引擎工具包,他是slor、ElasticSearch的底层,他们各有各的优点但是因为分布式的原因ElasticSearch是明显比slor更深程序员的喜爱,万维网、github、StackOverflow都是使用的ElasticSearch

weixin_44738308的博客 564

lucene引擎和sqlite数据库分词查询

lucene引擎和sqlite数据库分词查询,统计单词频率,统计重点单词,重点句子

使用lucene创建索引库

最近在用elasticSearch比较多,但是elasticSearch底层是Lucene实现的,所以就尝试玩一下lucene。 首先看一下全文检索的概念(摘抄自别处,具体的地方找不到了,以前记的笔记): 将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引。 例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表

wb785074651的博客 542

用lucene对数据库建立索引及搜索

用lucene对数据库建立索引及搜索.doc

Lucene系列 - 索引(七) - 对数据库记录建立索引

数据库本就具有检索功能,使用标准的Sql语句很容易从一个表中获取指定的内容。 另一方面,越来越多的应用系统要求文本的模糊查找,各大数据库厂商提供了各种全文检索的索引功能,来支持全文检索,但是效果一般,尤其是在大数据量的情况下,对服务器和系统的设置都要求专业人士来维护。 另一方面企业级检索、本地检索的发展,要求把不同的数据源通过同一的方式检索出来,实现异构信息的整合,把各种非结构化数据、半结构化数

大泡泡的专栏 3466

OSMDroid(1)——OSM简介,基础例子搭建

1.OSMDroid简介 Osmdroid是一款完全开源的地图基本操作SDK,相比于现在普遍使用的百度地图,高德地图,谷歌地图等最大的好处就是开源。 最近在做一个军方项目,要求完全不能联网,从开发到应用整个阶段都是在局域网进行,相比之下采用了OSMDroid这个SDK作为解决方案。 先来看OSMDroid,便是(OpenStreetMapForAndroid),后面都简称OSM...

robotskly的博客 6178

WorkVisual传输程序报错_发现一个内部错误

WorkVisual传输程序报错_发现一个内部错误

qq_16401025的博客 2454

用Lucene.net对数据库建立索引及搜索

 用Lucene.net对数据库建立索引及搜索       最近我一直在研究 Lucene.net ,发现Lucene.net对数据库方面建索引的文章在网上很少见,其实它是可以对数据库进行索引的,我闲着没事,写了个测试程序,竟然成功了, 可以实现对数据另类查询的一种方式(通过建索引查询),发表出来,和大家共享.   其实 Lucene.net 对数据库建索引很简单,只要把数据表里面的记

水上漂的专栏 6316

永磁同步电机解耦控制实战:从电流反馈到内模解耦的算法演进与选型指南

本文深入探讨了永磁同步电机高性能驱动中的核心挑战——交叉耦合问题,并对比分析了电流反馈解耦和内模解耦两大主流算法的原理、性能与适用场景。文章指出,电流反馈解耦动态响应快但对参数敏感,内模解耦鲁棒性更强但略有滞后,为工程师在不同应用需求下的算法选型提供了清晰的实战指南。

weixin_29039773的博客 264

lucene对整个数据库建立全文索引

导言: 如果要对整个数据库做精确查询或模糊查询,我们怎么才可以做到?还是通过SQL查询吗?答案是否定的。因为,通过SQL对整个数据库做精确查询或模糊查询,速度将非常的慢; lucene解决了这个问题。通过对表或者文本文件预先建立索引,可以很快的实现全文检索。 思路: 1、通过SQL得到所有表名的集合---->2、遍历所有的表,分别为每个表的每个记录建立索引;同时添加表的中文

lkx94的专栏 1107

自动驾驶嵌入式修炼秘籍:理想L9自动驾驶域控制器拆解

自动驾驶嵌入式修炼秘籍:理想L9自动驾驶域控制器拆解

pathfinder888的博客 2548

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

Lucene索引并检索数据库

比较深入的讲解了Lucene索引和检索原理,以及如何对数据库建立索引和检索数据

日拱一卒,功不唐捐 6139

2025海外代理IP深度横评:Bright Data、IPFoxy、SmartProxy等六大服务商实战对比

本文深度横评2025年六大海外代理IP服务商(Bright Data、IPFoxy、SmartProxy、IPIPGO、Kookeey及青果网络),基于实战测试数据,从IP池质量、速度稳定性、性价比等维度进行对比。针对跨境电商、数据爬虫、社交媒体管理等不同业务场景,提供精准的选购指南与避坑建议,帮助企业用户根据自身需求选择最合适的代理IP解决方案。

weixin_29196891的博客 434

用Lucene索引数据库

  1.写一段传统的JDBC程序,将每条的用户信息从数据库读取出来2.针对每条用户记录,建立一个lucene document Document doc = new Document();并根据你的需要,将用户信息的各个字段对应luncene document中的field 进行添加,如: doc.add(new Field("NAME","USERNAME",Field.Store.YES,

小人物的专栏 1万+

使用MATLAB/Simulink对一个简单的智能家居温湿度监测与控制系统进行建模和仿真

目录手把手教你学Simulink——基于Simulink的智能家居温湿度监测与控制仿真建模示例一、背景介绍二、所需工具和环境三、步骤详解步骤1:创建Simulink模型步骤2:构建传感器模块步骤3:添加控制器步骤4:构建执行器模块步骤5:连接各部分步骤6:设置仿真参数步骤7:添加观测器步骤8:运行仿真并分析结果四、总结 智能家居系统中的温湿度监测与控制系统是一个典型的物联网(IoT)应用场景,它通过传感器收集环境数据,并根据预设条件自动调节室内温度和湿度以提高居住舒适度。本指南将介绍如何使用MATLAB/S

xiaoheshang_123的博客 291

103.在 Vue 3 中使用 OpenLayers 控制图层来显示/隐藏地图

是一个强大的开源库,可以用于构建各种地理信息系统应用。在 Vue 3 中,我们可以结合。方法,可以直接控制某个图层是否可见,而不需要删除或重新创建图层。在开始之前,确保你已经搭建了 Vue 3 项目,并安装了。本文将详细介绍如何在 Vue 3 组合式 API (,并实现按钮控制地图的显示/隐藏功能。会导致 OSM 瓦片地图无法加载。方法控制地图图层的显示与隐藏。安装完成后,即可开始编写代码。在本教程中,我们介绍了如何在。来实现地图的显示/隐藏功能。来实现交互式地图,并通过。在 WebGIS 开发中,

小彭的博客 1560

lucene创建索引并搜索mysql数据库

lucene结合数据库步骤 1:写一段传统的JDBC程序,将每条的用户信息从数据库读取出来 2:针对每条用户记录,建立一个lucene document  Document doc = new Document();  并根据你的需要,将用户信息的各个字段对应luncene document中的field 进行添加

sunshaoshan163的专栏 7355

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

lucene索引和数据库索引的比较

1、数据库索引就是B+树了 2、Lucene索引就是倒排索引了 3、现在想确认的一点是,Lucene中对Key的索引结构是不是也用的B+树? 4、找了些资料知道了,Lucene对Key的索引没有用到B+树,而是按字典序进行排列,而有增量进来时,通过mergeSort进行索引的合并,形成新的索引文件,保存在磁盘中 5、对于Lucene的索引文件,有一些压缩策略,一个是Vint方法(可变长度整

zhangmengjlu的专栏 5314

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Lucene建立索引库

问题?Lucene如何建立索引库,lucene所需要的jar包是那些  , lucene如何使用索引库,lucene的核心原理 一、Lucene是什么? 二、建立索引库 三、

Mr_li13的博客 6725

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Lucene 索引原理

参考文章:时间序列数据库的秘密 (2)——索引 目录 1、Lucene 的倒排索引 2、Lucene 的联合查询 (1)skip list (2)Bitmap Lucene 基于倒排索引实现比关系型数据库更快的过滤,尤其是对于组合条件查询具有更快的检索速度。Lucene 的倒排索引相比于关系型数据库的 b-tree 索引快在哪里呢?简单的来说,b-tree 索引是为写入...

itakyubi的博客 1218

全文索引数据库Elasticsearch底层Lucene

/保存正在合并 的段,以防止合并期间再次选中被合并。//合并策略,也即选取哪些段 来进行合并。//段合并器,背后有 一个线程负责合并。//等待被合并的任务//正在被合并的任务我们可以得出:一个是选择哪些段应该参与合并,这一步由MergePolicy来决定。一个是将选择出的段合并成新段的过程,这一步由MergeScheduler来执行。段的合并也主要 包括:1. 对正向信息的合并,如存储域,词向量,标准化因子等。1. 对反向信息的合并,如词典,倒排表。

caihuayuan5的博客 1480
上一篇: java中将对象写入文件
下一篇: WSDL详细描述
refactaar
博客等级 码龄17年 0粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值