package com.sea.index; import java.io.File; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Date; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.CorruptIndexException; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriterConfig; import org.apache.lucene.queryParser.ParseException; import org.apache.lucene.queryParser.QueryParser; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.store.FSDirectory; import org.apache.lucene.store.LockObtainFailedException; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.Version; public class DataBaseIndex { /** * @param args * @throws SQLException * @throws IOException * @throws LockObtainFailedException * @throws CorruptIndexException * @throws ParseException */ public static void main(String[] args) throws CorruptIndexException, LockObtainFailedException, IOException, SQLException, ParseException { // TODO Auto-generated method stub String url = "jdbc:oracle:thin:@10.1.80.170:1521:NETCOOL"; String user = "uum"; String pwd = "uum"; DataBaseIndex test = new DataBaseIndex(); test.makeIndexForDatabase(test.getConnection(url, user, pwd)); test.findSM("P55A"); } public void findSM(String str) throws IOException, ParseException { File file = new File("d:\\data"); FSDirectory directory = FSDirectory.open(file); IndexReader reader = IndexReader.open(directory); IndexSearcher is = new IndexSearcher(reader); QueryParser query = new QueryParser(Version.LUCENE_36, "NAME", new StandardAnalyzer(Version.LUCENE_36)); Query q1 = query.parse(str); ScoreDoc[] docs = is.search(q1, is.maxDoc()).scoreDocs; for (int i = 0; i < docs.length; i++) { Date start = new Date(); String ip = is.doc(docs[i].doc).get("IP"); String name = is.doc(docs[i].doc).get("NAME"); String id = is.doc(docs[i].doc).get("ID"); Date end = new Date(); System.out.println("===========" + id + " : " +name+" : "+ip+" "+(end.getTime() - start.getTime()) + "ms"); } } public Connection getConnection(String url, String user, String password) { try { Class.forName("oracle.jdbc.OracleDriver"); return DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return null; } public ResultSet executeSQL(Connection conn, String sql) { try { Statement smt = conn.createStatement(); return smt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return null; } public void makeIndexForDatabase(Connection conn) throws CorruptIndexException, LockObtainFailedException, IOException, SQLException { convert(executeSQL(conn, "select serial,name,new_netip from ams_asset_tab where new_netip is not null")); } public void convert(ResultSet rs) throws SQLException, CorruptIndexException, LockObtainFailedException, IOException { while (rs.next()) { File file = new File("d:\\data"); FSDirectory directory = FSDirectory.open(file); IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_36, new StandardAnalyzer(Version.LUCENE_36)); IndexWriter writer = new IndexWriter(directory, conf); Document doc = new Document(); String serial1 = rs.getString("serial"); String name1 = rs.getString("name"); String ip1 = rs.getString("new_netip"); System.out.println("serial:" + serial1 + "\t" + "name:" + name1 + "\t" + "ip:" + ip1); Field serial = new Field("ID", serial1, Field.Store.YES, Field.Index.ANALYZED); doc.add(serial); Field name = new Field("NAME", name1, Field.Store.YES, Field.Index.ANALYZED); doc.add(name); Field ip = new Field("IP", ip1, Field.Store.YES, Field.Index.ANALYZED); doc.add(ip); writer.addDocument(doc); writer.close(); } } }
相关推荐
《Luence搜索Demo详解》 在信息技术领域,搜索引擎已经成为数据检索不可或缺的一部分,而Luence作为一款高性能、可扩展的全文搜索引擎库,深受开发者喜爱。本文将深入探讨基于.NET平台的Luence.Net搜索Demo,帮助...
描述中提到的"demo和demo详细制作方案"通常包括如何创建索引、如何执行查询、如何显示结果等步骤的示例代码。这些示例可以帮助初学者快速理解Lucene的工作原理,并能够动手实践。 1. **创建索引**: 首先,你需要...
"luence客户端测试软件luke" 指的是一个名为"Luke"的工具,它是针对Apache Lucene(一个流行的全文搜索引擎库)的客户端测试和分析工具。Luence可能是“Lucene”的拼写错误,但在这里我们假设指的是Lucene。 **描述...
《Luence和ElasticSearch面试准备》 Lucene和ElasticSearch是两个在全文搜索引擎领域中广泛使用的开源工具。Lucene是一个高性能、全文本搜索库,而Elasticsearch则是在Lucene的基础上构建的一个分布式、RESTful风格...
《Luence.net搜索小程序深度解析》 在信息技术日益发达的今天,搜索引擎已成为数据挖掘与信息检索的重要工具。本文将深入探讨一款基于.NET平台的搜索引擎——Luence.net,它以其高效、灵活的特点,为开发者提供了...
lucene 原理与分析,底层源码解析,应用场景及实践,相关配置
描述中提到“使用luence索引数据库中的记录”,意味着我们将学习如何将数据库中的数据转化为Lucene可处理的格式,并创建索引。这个过程通常包括以下步骤: 1. **初始化Lucene**: 创建一个`Directory`对象,这是...
IKAnalyzer和Lucene是两个在中文处理领域广泛应用的开源项目。IKAnalyzer是一个专门针对中文的分词工具,而Lucene则是一个全文检索框架。这里我们深入探讨这两个组件以及它们的关联。 **IKAnalyzer** 是一个高性能...
### 获取全部Luence数据 #### 知识点详解 **Lucene** 是一个高性能、全功能的文本搜索引擎库。在本文档中,我们将探讨如何通过Lucene获取索引中的所有文档,包括创建索引、查询索引以及遍历所有文档的具体步骤。 ...
1. 文档读取:首先,你需要将待搜索的数据(例如文件内容)读取并解析成Lucene的Document对象,每个Document对应数据库中的一条记录。 2. 添加记录:将Document对象添加到一个名为IndexWriter的对象中,这个过程...
在本项目中,Spring MVC作为后端的核心组件,负责接收前端请求,处理业务逻辑,与数据库交互,并返回响应数据。它的优点包括依赖注入、面向切面编程以及强大的异常处理能力。 接着,MyBatis是一个轻量级的持久层...
本实例将探讨如何结合Lucene和SQL Server数据库来实现高效的索引和搜索功能。 Lucene是一个由Apache软件基金会开发的全文检索库,它提供了一个高级的、可扩展的、基于Java的搜索程序库。Lucene的核心功能包括文档的...
Lucene的主要功能包括文档的索引和搜索,支持多种数据源,如文本文件、数据库等。在Java应用中集成Lucene,能够快速为应用程序添加全文搜索引擎,使得用户可以通过关键词对海量数据进行高效的查找。 **Lucene的基本...
2. **创建索引**: 对预处理的数据(如数据库中的文本内容)进行分词,然后使用Lucene的Document对象添加字段,并写入索引。 3. **用户输入处理**: 用户输入句子后,同样使用盘古分词进行分词,得到查询词汇。 4. *...
5. **luence46**: 这个压缩包可能包含了Lucene 4.6版本的源代码,源码提供了深入了解其内部工作原理的机会。你可以通过阅读和分析源代码,学习如何实现自己的搜索功能,或者优化现有系统的搜索性能。 通过对...
《Lucene in Action》是一本深入探讨Apache Lucene的权威指南,这本书的中英文PDF版本提供了全面了解和学习这个搜索引擎库的机会。Lucene是Java开发的一款高性能、全文本搜索库,广泛应用于各种需要强大搜索功能的...
该搜索引擎系统基于 Java,数据库是 MySql。主要完成的功能有:用爬虫获取网页;解析爬取的 html;解析后的数据插入到 MySql 数据库;通过 Lucene 建立索引;检索用户的关键词或关键字句;页面的呈现效果需要有 Ajax...
Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,...
在搜索引擎和信息检索领域,Lucene是一个非常重要的开源全文搜索引擎库。它提供了高效的文本索引和搜索功能,被广泛应用于各种信息系统的后台。在Lucene中,为了提高搜索的准确性和效率,通常会使用到一些优化技术,...
这些数据可能包括文本内容、链接、图片等,然后存储到本地数据库或文件系统中,供后续处理使用。Java作为广泛应用于Web开发的语言,其丰富的库和强大的并发处理能力使得编写高效爬虫成为可能。 接下来,我们关注的...