package com.javabean;
import java.io.File;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.queryParser.QueryParser.Operator;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.SimpleFSDirectory;
import org.apache.lucene.util.Version;
public class lucene
{
public void createIndexFile() {
IndexWriter indexWriter=null;
try {
// 需要的分词器
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
// 创建的是哪个版本的IndexWriterConfig
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(
Version.LUCENE_36, analyzer);
// 创建系统文件-----
Directory directory = new SimpleFSDirectory(new File("D:\\tomcat-6.0.35\\webapps\\jsp_flex\\index"));
indexWriter = new IndexWriter(directory,indexWriterConfig);
//访问数据库拿数据
DBConnect db = new DBConnect();
String sql = "select * from book";
ResultSet rs = db.select(sql);
while(rs.next())
{
//indexWriter添加索引
Document doc=new Document();
//文本中添加内容
doc.add(new Field("ISBN",rs.getString(1).toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("bookname",rs.getString(2).toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("author",rs.getString(3).toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("leibie",rs.getString(6).toString(),Store.YES,Index.ANALYZED));
doc.add(new Field("jianjie",rs.getString(10).toString(),Store.YES,Index.ANALYZED));
//添加到索引中去
indexWriter.addDocument(doc);
}
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally{
if(indexWriter!=null){
try {
indexWriter.commit();
indexWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public void seacher(String queryString) throws IOException
{
FSDirectory fs;
try {
fs = FSDirectory.open(new File("D:\\tomcat-6.0.35\\webapps\\jsp_flex\\index"));
IndexReader ir = IndexReader.open(fs);
long start = System.currentTimeMillis();
IndexSearcher search = new IndexSearcher(ir);
String key = queryString;
String fieds[] = new String[]{"ISBN","bookname","author","leibie","jianjie"};
Analyzer ik = new StandardAnalyzer(Version.LUCENE_36);
MultiFieldQueryParser m = new MultiFieldQueryParser(Version.LUCENE_36, fieds, ik);
m.setDefaultOperator(Operator.AND);
Query query = m.parse(key) ;
ScoreDoc[] hits = search.search(query, null, 1000).scoreDocs;
System.out.println("共命中"+hits.length+"条记录");
for(ScoreDoc scoreDoc:hits)
{
Document doc= search.doc(scoreDoc.doc);
System.out.println(scoreDoc.score + "\t ISBN:"+doc.get("ISBN")+"\t bookname:"+doc.get("bookname")+"\t leibie:"+doc.get("leibie"));
}
System.out.println("执行时间:"+(System.currentTimeMillis()-start)+"毫秒");
}
catch (IOException e)
{
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException
{
lucene test = new lucene();
// test.createIndexFile();
test.seacher("中国");
}
}
分享到:
相关推荐
无论是开发企业级搜索引擎,还是构建个性化的信息检索系统,Lucene 3.6.1都能提供强大的支持。在实际开发中,开发者可以根据具体需求选择使用核心包或贡献模块,灵活构建自己的搜索解决方案。 通过阅读 `lucene-...
lucene3.6.1 所需jar整合包里面包括 lucene-highlighter-3.6.1.jar lucene-core-3.6.0.jar lucene-analyzers-3.6.1.jar IKAnalyzer2012_u6.jar
基于Lucene的Oracle数据库全文检索 基于Lucene的Oracle数据库全文检索是指使用Lucene搜索引擎来实现Oracle数据库中的全文检索。Lucene是一个开源的全文搜索引擎API,提供了完整的查询引擎和索引引擎,部分文本分析...
在标题中提到的"lucene3.6.1文件关键字搜索代码(附加核心包)"是一个基于Lucene 3.6.1版本的示例项目,主要目的是帮助初学者理解和掌握如何使用Lucene进行文件中的关键字搜索。 Lucene的主要功能包括: 1. **文本...
总的来说,Lucene 3.6.1作为一个经典的版本,虽然现在已经被更先进的版本所替代,但它的核心理念和基本操作仍然适用于现代的全文检索系统。通过学习这个入门教程,读者将能够掌握Lucene的基本用法,为进一步深入研究...
Lucene 3.6.1 API chm格式带全文索引方便携带和查询。 从之前发布其他chm文件下载用户的反映看,有不少朋友反映下载后打开无法显示,这一般不是chm文件的问题,这里统一说明一下解决办法: 如果文件打开看不到右边...
Lucene 3.6.1: 中文分词、创建索引库、排序、多字段分页查询以及高亮显示源 希望对大家有帮助, 我自己建立的mysql数据库 使用了IKAnalyzer分词器源代码,大家可以自己设置停词,也可以自己改写算法
Lucene是Apache软件基金会的一个开源项目,它是一个全文搜索引擎库,提供了高性能、可扩展的信息检索服务。Lucene 3.6.1是其历史版本之一,虽然现在有更新的版本,但3.6.1仍具有重要的学习价值,尤其对于那些需要...
《深入剖析Lucene 3.6.1:搜索引擎构建的核心技术》...总结,Lucene 3.6.1是一个强大的全文检索工具,其核心技术和优化特性使其在搜索引擎开发中不可或缺。通过深入理解和运用,开发者可以创建出高效、精准的搜索系统。
**使用Lucene全文检索数据库** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发。它是Java编写的,能够帮助开发者在各种应用程序中实现强大的全文检索功能。在这个项目中,我们将探讨如何利用Lucene ...
总而言之,Lucene 3.6.1 学习是一个全面了解信息检索和搜索引擎技术的好起点。通过研究源码和实践工具,你可以深入了解 Lucene 的工作机制,这对于任何想要构建自定义搜索解决方案的开发者来说都是宝贵的财富。
《深入剖析Lucene 3.6.1源码:全文检索引擎的核心技术解析》 Lucene,这个强大的全文检索引擎工具,一直以来都是开发者们研究和应用的重要对象。它以其高效、灵活的特点,广泛应用于信息检索、搜索引擎等领域。本文...
标题和描述中提到的知识点是关于Lucene全文检索数据库的应用示例,特别是在处理大量数据和多表查询时的性能优化。下面将详细阐述Lucene的基本概念、如何在Java环境中使用Lucene进行全文检索,以及结合MySQL数据库的...
本文旨在深入探讨Lucene与关系型数据库之间的差异,尤其是它们在全文检索领域的表现,以期为企业和个人在选择合适的数据处理方案时提供参考。 ### Lucene:全文检索的革新者 Lucene由Doug Cutting创建,于2001年...
### Lucene检索数据库支持中文检索 #### 一、Lucene简介与原理 ##### 1. Lucene概述 Lucene是一款高性能、全功能的文本搜索引擎库,由Java编写而成。其核心功能是为开发者提供构建搜索应用程序的基础框架。Lucene...
用Lucene检索数据库 Lucene是一种全文搜索的辅助工具,可以对数据库进行全文搜索,为我们带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。下面将详细...
在某些场景下,我们需要结合 Lucene 的全文检索能力和数据库的数据存储能力,来实现更复杂的查询需求。 在这个"lucene与数据库连接进行查询"的主题中,我们主要探讨如何将 Lucene 与 JDBC(Java Database ...