`

全文搜索Lucene

阅读更多

 
    说到搜索,大部分学员想到的就是数据库的模糊查询。模糊查询有两个问题:效率低,不能查找HTML页面上的静态内容。
 
    于是需要工具进行对于网站的全文搜索。基本原理是用工具扫描整个网站的页面,将内容进行索引并保存,然后可以通过用户的关键字搜索。如果你用过google桌面搜索或者msn桌面搜索,应该对这个过程比较了解。
 
    可见一个全文搜索工具至少需要包含两个方面:创建索引和搜索。
 
    Lucene作为apache的开源工具,免费提供这些功能,并且能识别多种文件格式,支持词法分析等,是比较常用的全文搜索工具。
 
    但是Lucene的中文教程很少,有本《Lucene In Action》,但讲的是老版本,Lucene2.0后,API变化较大,还没有很好的资料。
 
    下面先贴出今天写的两段代码,针对磁盘文件的索引创建和搜索:
 
    1,创建索引
public class CreateIndex {

 

 public static void main(String[] args) {

  String indexPath = "g:/indexout";   //保存索引的路径
  try {
   IndexWriter writer = new IndexWriter(indexPath, new StandardAnalyzer(), true);
  
   addFile(writer, new File("g:/index"));   //为指定的目录创建索引
  
   int count = writer.docCount();          //得到索引文件的个数
   writer.optimize();                      //优化索引
   writer.close();
   System.out.println("创建索引完毕,一共索引了" + count + "个文件!");
  } catch (Exception e) {
  }
 }

 

 //用递归的方法搜索文件

 public static void addFile(IndexWriter writer, File file) {
  if (file.isDirectory()) {
   File fs[] = file.listFiles();
   for (int i=0; i<fs.length; i++) {
    addFile(writer, fs[i]);
   }
  } else {
   try {

    //记录文件内容
    Field fContent = new Field("content", new FileReader(file));

    //记录文件名
    Field fPath = new Field("path", file.getAbsolutePath(), Field.Store.YES, Field.Index.UN_TOKENIZED);
    Document doc = new Document();
    doc.add(fContent);
    doc.add(fPath);
    writer.addDocument(doc);
   } catch (Exception e) {
   }
  }
 }
}
 

 

   2,搜索

 public class SearchTest {
 public static void main(String[] args) {
  String key = "搜索关键字";
  try {
   Directory dir = FSDirectory.getDirectory("g:/indexout");
   IndexSearcher searcher = new IndexSearcher(dir);
   Query query = new QueryParser("content", new StandardAnalyzer()).parse(key);    //创建一个查询
   Hits hits = searcher.search(query);    //得到查询的结果
   Iterator it = hits.iterator();         //迭代打印结果
   while (it.hasNext()) {
    Hit hit = (Hit) it.next();
    Document doc = hit.getDocument();
    System.out.println(doc.get("path"));     //打印搜索到文件的路径
   }
  } catch (Exception e) {
  }

 }

}
 

 

这两段代码已经可以实现Google桌面搜索的核心功能了.

分享到:
评论

相关推荐

    全文检索Lucene 全文检索Lucene

    以上内容只是Lucene全文检索的基础知识,实际使用中还需要根据具体需求进行调整和优化。在深入学习Lucene的过程中,阅读《全文检索Lucene》这本书将是十分有益的,它将帮助你更好地理解和掌握Lucene的核心概念及其...

    [HeyJava][传智播客]全文检索Lucene源码

    【标题】:“HeyJava传智播客全文检索Lucene源码” 【描述】:这个资源主要聚焦于Lucene,一个广泛使用的全文检索库,由Apache软件基金会开发并维护。通过学习这部分内容,你可以深入理解Lucene如何实现高效的文本...

    最新全文检索 lucene-5.2.1 入门经典实例

    总之,Lucene-5.2.1是一个强大而灵活的全文检索框架,不仅适用于大型网站的搜索功能,也可以用于企业内部信息检索、文档管理系统等多个领域。通过学习和实践这些经典实例,开发者能够掌握如何利用Lucene构建高效的...

    xwiki全文搜索lucene后台代码

    《XWiki全文搜索Lucene后台代码解析》 在IT领域,全文搜索引擎的使用越来越广泛,尤其是在各类信息量庞大的Web应用中。XWiki是一款强大的开源wiki系统,它支持自定义的数据模型和丰富的扩展机制,其中就包括了全文...

    全文检索 lucene-5.2.1 入门Eclipse工程实例

    Eclipse工程文件,全文检索 lucene-5.2.1 入门Eclipse工程实例,福利放送,与lucene3结果比对

    全文搜索Lucene&ElasticSearch-新版.doc

    【全文搜索Lucene & ElasticSearch】是一门关于安装和入门的课程,主要涵盖了全文检索的基本概念,Lucene和ElasticSearch的介绍,以及如何使用Java操作ElasticSearch。全文检索,顾名思义,是对非结构化数据进行搜索...

    全文搜索lucene知识

    **全文搜索Lucene知识** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它是Java语言编写,但可以被其他编程语言通过各种桥接库进行调用。Lucene的核心功能包括文本分析、索引创建、查询解析...

    全文检索Lucene

    **全文检索Lucene** Lucene是Apache软件基金会的开源项目之一,它是一个强大的、高性能的全文检索库。作为Java编写的基础组件,Lucene为开发者提供了实现全文搜索功能所需的底层算法和数据结构。这个库不仅实现了...

    SpringMvc+Lucene全文检索

    **Spring MVC + Lucene 全文检索** 在现代Web应用中,实现高效的全文检索功能是提升用户体验的关键之一。本文将详细介绍如何使用Spring MVC框架结合Apache Lucene库来构建一个强大的全文检索系统。首先,让我们了解...

    全文检索lucene

    【全文检索lucene】 Lucene是一个高性能、可扩展的信息检索库,由Apache软件基金会开发,是Java编写的一个全文检索引擎的开源工具包。它提供了一个简单但功能强大的API,允许开发者将全文搜索功能添加到自己的应用...

    全文检索系统(Lucene)

    Lucene提供了强大的文本分析、索引构建和搜索功能,为开发者提供了构建自己的全文检索应用的基础框架。由于其高效性和灵活性,Lucene已经成为Java世界中最受欢迎的全文检索引擎。 **Lucene的核心组件** 1. **索引*...

    全文检索 lucene

    Lucene从问世之后,引发了开放源代码社群的巨大反响,程序员们不仅使用它构建具体的全文检索应用,而且将之集成到各种系统软件中去,以及构建Web应用,甚至某些商业软件也采用了Lucene作为其内部全文检索子系统的...

    Lucene全文检索引擎

    **Lucene全文检索引擎** Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索引擎库,可以被集成到各种应用中实现全文检索功能。Lucene提供了完整的搜索功能实现,包括索引创建、文档存储、查询...

    Lucene.Net 实现全文检索

    Lucene.Net 是一个基于 Apache Lucene 的开源全文搜索引擎库,专为 .NET Framework 平台设计。它提供了一套高级文本搜索程序库,让开发者能够在 .NET 应用程序中轻松实现全文检索功能。在本案例中,我们将在 .Net ...

    Lucene全文搜索_LuceneJava全文搜索_

    在"Lucene全文搜索_LuceneJava全文搜索_"这个主题中,我们将深入探讨Lucene如何在Java环境中实现高效的全文搜索引擎。首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和搜索(Search)。...

    java全文搜索lucene-3.0.0-src+lib.zip

    Java全文搜索引擎Lucene是一款开源的、高性能的文本分析和检索库,它为开发者提供了在Java应用程序中实现全文搜索功能的能力。本篇将深入探讨Lucene 3.0.0版本的核心特性、设计理念以及使用方法。 一、Lucene概述 ...

    中文分词及其在基于Lucene的全文检索中的应用

    《中文分词及其在基于Lucene的全文检索中的应用》这篇论文主要探讨了中文分词在全文检索系统,特别是基于Lucene平台的应用。全文检索技术是现代信息检索领域的重要组成部分,而Lucene作为一款开源的全文检索引擎框架...

    使用zend Framework的lucene进行全文检索

    在本文中,我们将探讨如何使用Zend Framework的Lucene模块进行全文检索,特别是针对中文分词的处理。全文检索是提高网站或应用搜索功能的关键技术,它允许用户输入任意词汇,系统能够快速找到与之相关的内容。Zend ...

Global site tag (gtag.js) - Google Analytics