`
zhouxing
  • 浏览: 206454 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Lucene 建立索引数据库 实现搜索网页

阅读更多

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

 

分享到:
评论
1 楼 lzysystem 2009-08-22  
你的部署方法下载不了,能不能给我发一份,谢谢,我的邮箱是lzysystem@tom.com

相关推荐

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

    《使用Lucene.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...

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

    使用 Lucene.net 建立简单的数据库搜索程序 &lt;!-- ... --&gt; &lt;td&gt;&nbsp; &lt;asp:textbox id="tj" runat="server"&gt;&lt;/asp:textbox&gt; 搜索"&gt; &lt;!-- ... --&gt; ``` 对应的`aspx.cs`后台代码中,你...

    关于lucene建立数据库索引的更新说明

    总之,使用Lucene建立数据库索引是一个涉及多方面知识的过程,包括但不限于版本适配、索引策略、用户界面实现、搜索结果处理和分词优化。在实践中,不断学习和交流,结合具体需求调整方法,才能更好地利用Lucene实现...

    LUCENE索引搜索数据库技术汇总

    以下是对Lucene索引数据库以及搜索功能的详细解析。 1. **Lucene基本概念** - **索引(Index)**: Lucene的核心就是建立索引,它将原始文本转换成可快速搜索的数据结构。索引过程包括分析(Analyzer)文本、分词、...

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

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

    基于Lucene的Oracle数据库全文检索.pdf

    通过使用Lucene,可以对Oracle数据库中的数据建立索引,并提供快速的全文检索功能。 Lucene的优点在于其跨平台和简单易用等特点,已经吸引了众多的用户群体。 Lucene的架构提供了完整的查询引擎和索引引擎,部分...

    Lucene与关系型数据库对比

    而Lucene的索引机制则更加灵活和高效,它基于项的静态存储,能够实现基于项的高效搜索,从而大幅提高了搜索速度和资源利用率。 ### 结论 综上所述,Lucene与关系型数据库各有千秋,分别在全文检索和事务处理两个...

    利用Lucene.NET建立SQL数据库记录索引文件程序C#源代码(包含数据库结构)

    对初学使用dotlucent作站内检索的比较有帮助。 利用dotlucene为网站做的索引文件的应用程序。 数据库源是SQL Server,项目是...应用程序界面可以配置数据库链接,生成报告,定时执行增量索引,对单条索引进行更新操作。

    lucene与sqlserver数据库实现索引的简单实例

    1. **数据抽取**:首先,我们需要从SQL Server数据库中获取需要建立索引的数据。这通常通过JDBC(Java Database Connectivity)驱动实现,编写Java代码连接数据库并执行查询,获取所需字段。 2. **预处理**:数据...

    lucene全文检索简单索引和搜索实例

    《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...

    使用lucene全文检索数据库

    Lucene通过建立索引来实现快速搜索,索引过程包括分词(Tokenization)、词干提取(Stemming)和停用词处理(Stopword Removal)等步骤,将文本转化为可搜索的形式。 在描述中提到的程序中,`Test.java`和`Tangshi....

    lucene 全文检索数据库

    Lucene通过建立倒排索引来实现全文检索,这种方法将文档中的词汇映射到包含该词汇的文档列表,大大提高了搜索效率。 ### Lucene在Java中的应用 在Java开发中,使用Lucene进行全文检索通常涉及以下步骤: 1. **...

    基于lucene技术的增量索引

    本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...

    lucene索引结构原理.docx

    - **全文检索**:首先对非结构化数据建立索引,然后搜索索引来快速定位所需内容。这是Lucene的核心机制,通过索引提升搜索效率。 全文检索的关键在于通过建立索引,将原本非结构化的文本数据转化为结构化的表示,...

    用Lucene检索数据库.doc

    本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。下面将详细介绍如何使用Lucene对数据库进行检索。 一、数据库表结构介绍 本文中使用的数据库表是图书馆管理系统中的某个作者表-...

    用LUCENE连击MYSQL建立索引并搜索的JAVA代码。

    创建好`Document`后,将其添加到`IndexWriter`,这样Lucene就会为这些字段建立索引。 当索引构建完成后,我们就可以实现搜索功能了。首先,创建一个`DirectoryReader`来读取已经建立的索引,然后使用`IndexSearcher...

Global site tag (gtag.js) - Google Analytics