lucene实现搜索引擎的建立索引数据库,处理搜索结果.
一,创建索引
public boolean createIndex() throws IOException {
//.......
Directory fsDirectory = FSDirectory.getDirectory(Constant.INDEX_DIR, true);
Analyzer analyzer = new IK_CAnalyzer();//分析器
IndexWriter indexWriter = new IndexWriter(fsDirectory, analyzer, true);
for (int i = 0; i < htmls.length; i++) {
String htmlPath = htmls[i].getAbsolutePath();
if (htmlPath.endsWith(".html") || htmlPath.endsWith(".htm")) {
//添加 Document
addDocument(htmlPath, indexWriter);
}
}
indexWriter.optimize();
indexWriter.close();
}
二 ,添加 Document
public void addDocument(String htmlPath, IndexWriter indexWriter) {
HTMLDocParser htmlParser = new HTMLDocParser(htmlPath);
String path = htmlParser.getPath();
String title = htmlParser.getTitle();
Reader content = htmlParser.getContent();
LineNumberReader reader = new LineNumberReader(content);
String snap = "";
try {
snap = reader.readLine();
String tp = reader.readLine();
if (snap.length() < 30 & tp != null) {
snap = snap + tp;
}
} catch (IOException e1) {
e1.printStackTrace();
}
Document document = new Document();
document.add(new Field("path", path, Field.Store.YES, Field.Index.NO));//文件路径
document.add(new Field("title", title, Field.Store.YES,Field.Index.TOKENIZED));//文件标题
document.add(new Field("snap", snap, Field.Store.YES, Field.Index.NO));//快照
document.add(new Field("content", content));//内容
try {
indexWriter.addDocument(document);
} catch (IOException e) {
e.printStackTrace();
}
}
三 ,显示结果
public List search() {
List searchResult = new ArrayList();
if (false == indexManager.ifIndexExist()) {
try {
if (false == indexManager.createIndex()) {
return searchResult;
}
} catch (IOException e) {
e.printStackTrace();
return searchResult;
}
}
IndexSearcher indexSearcher = null;
try {
indexSearcher = new IndexSearcher(indexManager.getIndexDir());
} catch (IOException ioe) {
ioe.printStackTrace();
}
QueryParser queryParser = new QueryParser("content", analyzer);
Query query = null;
try {
query = queryParser.parse(searchWord);
} catch (ParseException e) {
e.printStackTrace();
}
if (null != query && null != indexSearcher) {
try {
Hits hits = indexSearcher.search(query);
for (int i = 0; i < hits.length(); i++) {
SearchResultBean resultBean = new SearchResultBean();
resultBean.setHtmlPath(hits.doc(i).get("path"));
resultBean.setHtmlTitle(hits.doc(i).get("title"));
resultBean.setHtmlSnap(hits.doc(i).get("snap"));
searchResult.add(resultBean);
}
} catch (IOException e) {
e.printStackTrace();
}
}
return searchResult;
}
myeclipse4.2 weblogic 9 验证通过
部署方法
下载 lucene-test.rar
修改web.xml启动参数dataDir,indexDir
分享到:
相关推荐
用lucene对数据库建立索引及搜索.doc
关于Lucene对数据操作,详细信息请见文档
lucene建立数据库索引的问题,在这里,把其中的一些问题补充说明,希望对大家有新的帮助,希望大家相互提出问题,相互学习,共同进步!!
用Lucene.net对数据库建立索引及搜索
关于lucene对数据库建立索引和进行查询。这方面的东西太少了。大家应该多上传一些资料。
Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个...本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家
对初学使用dotlucent作站内检索的比较有帮助。 利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是...应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。
结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等
这是用Lucene.NET结合Sql建立全文检索Demo的源码,适合初学者学习Lucene,其中包含所需的DLL文件。
然后,利用 Lucene 的索引功能,将数据库中的公交信息建立索引,以便进行快速的搜索。 在搜索功能方面,可以实现基本的关键字搜索,用户可以通过输入线路号、站点名称等关键字来检索相关的公交信息。此外,还可以...
lucene为数据库搜索建立增量索引.txt lucene数据库索引.txt 新闻系统全文检索的思绪.txt lucene学习笔记 1 .txt lucene学习笔记 2.txt lucene学习笔记 3 .txt lucene入门实战.txt Lucene 的学习 .txt ...
完整代码,基于Lucene的分词,根据搜索引擎的目标和基本内容,将实现功能模块主要划分为创建中文分析器(创建索引)、读取索引文件查询记录、根据输入的内容进行分词、根据关键字进行全文检索、将结果按JSON格式输出...
第一章 Lucene是个倒排索引 第二章 Lucene与数据库 第三章 Lucene的索引建立及文件结构 第四章 Lucene的检索机制及文档得分 第五章 Lucene的存储优化 第六章 Lucene的效率优化 第七章 用Lucene加快web开发!
本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。至于数据库的内容,可以是网页的内容,还是其它的。本文中数据库的内容是图书馆管理系统中的某个作者表- Authors表。
基于Lucene实现了一个海量数据库全文检索的原型。把关系数据库引入了本系统,可针对...采用多线程,通过动态机制来实现不同类型源数据库中记录的抽取、转换、建立索引;提供定时自动更新索引的功能;提供多种检索方式。
Lucene.Net,.net 的开源 全文搜索框架! 更多信息请查看 www.iubang.com
对文档建立索引的源代码 对文档检索的源代码 使用Lucene检索和使用java.lang.String内置方法进行检索的效率比较 安装:直接在Eclipse中选取“import->Existing Project” Eclipse工程/ch7:原书第七章和第九章的...
这是基于lucene搜索引擎的java源码,里面数据库,包括建立索引,增量索引一应俱全,希望对大家有作用。
通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分,Lucene是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net平台...通过Lucene建立索引;对简单关键字进行搜索;使用Ajax的局部刷新页面展示结果。
对文档建立索引的源代码 对文档检索的源代码 使用Lucene检索和使用java.lang.String内置方法进行检索的效率比较 安装:直接在Eclipse中选取“import->Existing Project” Eclipse工程/ch7:原书第七章和第九章的...