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.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...
使用 Lucene.net 建立简单的数据库搜索程序 <!-- ... --> <td> <asp:textbox id="tj" runat="server"></asp:textbox> 搜索"> <!-- ... --> ``` 对应的`aspx.cs`后台代码中,你...
总之,使用Lucene建立数据库索引是一个涉及多方面知识的过程,包括但不限于版本适配、索引策略、用户界面实现、搜索结果处理和分词优化。在实践中,不断学习和交流,结合具体需求调整方法,才能更好地利用Lucene实现...
以下是对Lucene索引数据库以及搜索功能的详细解析。 1. **Lucene基本概念** - **索引(Index)**: Lucene的核心就是建立索引,它将原始文本转换成可快速搜索的数据结构。索引过程包括分析(Analyzer)文本、分词、...
用Lucene.net对数据库建立索引及搜索
通过使用Lucene,可以对Oracle数据库中的数据建立索引,并提供快速的全文检索功能。 Lucene的优点在于其跨平台和简单易用等特点,已经吸引了众多的用户群体。 Lucene的架构提供了完整的查询引擎和索引引擎,部分...
而Lucene的索引机制则更加灵活和高效,它基于项的静态存储,能够实现基于项的高效搜索,从而大幅提高了搜索速度和资源利用率。 ### 结论 综上所述,Lucene与关系型数据库各有千秋,分别在全文检索和事务处理两个...
对初学使用dotlucent作站内检索的比较有帮助。 利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是...应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。
1. **数据抽取**:首先,我们需要从SQL Server数据库中获取需要建立索引的数据。这通常通过JDBC(Java Database Connectivity)驱动实现,编写Java代码连接数据库并执行查询,获取所需字段。 2. **预处理**:数据...
《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...
Lucene通过建立索引来实现快速搜索,索引过程包括分词(Tokenization)、词干提取(Stemming)和停用词处理(Stopword Removal)等步骤,将文本转化为可搜索的形式。 在描述中提到的程序中,`Test.java`和`Tangshi....
Lucene通过建立倒排索引来实现全文检索,这种方法将文档中的词汇映射到包含该词汇的文档列表,大大提高了搜索效率。 ### Lucene在Java中的应用 在Java开发中,使用Lucene进行全文检索通常涉及以下步骤: 1. **...
本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...
- **全文检索**:首先对非结构化数据建立索引,然后搜索索引来快速定位所需内容。这是Lucene的核心机制,通过索引提升搜索效率。 全文检索的关键在于通过建立索引,将原本非结构化的文本数据转化为结构化的表示,...
本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。下面将详细介绍如何使用Lucene对数据库进行检索。 一、数据库表结构介绍 本文中使用的数据库表是图书馆管理系统中的某个作者表-...
创建好`Document`后,将其添加到`IndexWriter`,这样Lucene就会为这些字段建立索引。 当索引构建完成后,我们就可以实现搜索功能了。首先,创建一个`DirectoryReader`来读取已经建立的索引,然后使用`IndexSearcher...