`
liuzm
  • 浏览: 101546 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

lucene 入门 开发实例

阅读更多
自己在网上学习   lucene 经测试后.发布到自己的博客上来 
     开发之间一定要有 lucene包 哦
      然后看下子语法:

        IndexWriter:lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。

      Analyzer:分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。

      Directory:索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。

      Document:文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。

Field:字段。

      IndexSearcher:是lucene中最基本的检索工具,所有的检索都会用到IndexSearcher工具;

        Query:查询,lucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些类。

      QueryParser: 是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。

      Hits:在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在lucene中,搜索的结果的集合是用Hits类的实例来表示的。


      步骤好如下:  
        1、在windows系统下的的C盘,建一个名叫liuzm的文件夹(这文件由你的程序定,因为在下面的程序

中我用的是liuzm这个文件),在该文件夹里面随便建2个txt文件,随便起名啦,就叫"1.txt","2.txt"

      txt 理面的文档 输入"刘志猛博客 www.liuzm.com"
    
      准备工作完成 开始建立索引:


   
     public static void main(String[] args) throws Exception {  
            /**//* 指明要索引文件夹的位置,这里是C盘的liuzm文件夹下
             *   只是为了方便测试.所以文件是自己写的,在此目录下 建1.txt 2.txt
             * */ 
            File fileDir = new File("c:\\liuzm");  
     
            /**//* 这里放索引文件的位置 */ 
            File indexDir = new File("c:\\index");  
            Analyzer luceneAnalyzer = new StandardAnalyzer();  
            IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,  
                    true);
            //第一个参数:索引存放在什么地方

           // 第二个参数:分析器,继承自org.apache.lucene.analysis.Analyzer类

           // 第三个参数:为true时,IndexWriter不管目录内是否已经有索引了,一律清空,重新建立;当为false时,则IndexWriter会在原有基础上增量添加索引。所以在更新的过程中,需要设置该值为false。


            File[] textFiles = fileDir.listFiles();  
            long startTime = new Date().getTime();  
              
            //增加document到索引去  
            for (int i = 0; i < textFiles.length; i++) {  
                if (textFiles[i].isFile()  
                        && textFiles[i].getName().endsWith(".txt")) {  
                    System.out.println("File " + textFiles[i].getCanonicalPath()  
                            + "正在被索引.");  
                    String temp = FileReaderAll(textFiles[i].getCanonicalPath(),  
                            "GBK");  
                    System.out.println(temp);  
                    Document document = new Document();  
                    Field FieldPath = new Field("path", textFiles[i].getPath(),  
                            Field.Store.YES, Field.Index.NO);  
                    Field FieldBody = new Field("body", temp, Field.Store.YES,  
                            Field.Index.TOKENIZED,  
                            Field.TermVector.WITH_POSITIONS_OFFSETS);  
                    document.add(FieldPath);  
                    document.add(FieldBody);  
                    indexWriter.addDocument(document);  
                }  
            }  
            //optimize()方法是对索引进行优化  
            indexWriter.optimize();  
            indexWriter.close();  
              
            //测试一下索引的时间  
            long endTime = new Date().getTime();  
            System.out  
                    .println("这花费了" 
                            + (endTime - startTime)  
                            + " 毫秒来把文档增加到索引里面去!" 
                            + fileDir.getPath());  
        }  
     
        public static String FileReaderAll(String FileName, String charset)  
                throws IOException {  
            BufferedReader reader = new BufferedReader(new InputStreamReader(  
                    new FileInputStream(FileName), charset));  
            String line = new String();  
            String temp = new String();  
              
            while ((line = reader.readLine()) != null) {  
                temp += line;  
            }  
            reader.close();  
            return temp;  
        }  


然后就是查询:

public static void main(String[] args) throws IOException, ParseException {  
        Hits hits = null;  
        String queryString = "刘志猛";  
        Query query = null;  
        IndexSearcher searcher = new IndexSearcher("c:\\index");  
 
        Analyzer analyzer = new StandardAnalyzer();  
        try {  
            QueryParser qp = new QueryParser("body", analyzer);  
            try {
                query = qp.parse(queryString);
               
               
                // 以下 是评分机制  的代码.等看懂这个例子后,可以把注销代码删了
               
//                hits = searcher.search(query);
//                for(int i=0;i<hits.length();i++){
//                    Explanation explanation = searcher.explain(query,hits.id(i));
//                    System.out.println("得分"+hits.score(i));
//                    System.out.println("具体情况"+explanation);
//                    System.out.println("长度"+hits.length());
//                   
//                }
               
               
            } catch (org.apache.lucene.queryParser.ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  
        } catch (ParseException e) {  
        }  
        if (searcher != null) {  
            hits = searcher.search(query);  
            if (hits.length() > 0) {  
                System.out.println("找到:" + hits.length() + " 个结果!");  
            }  
            else{
                System.out.print("没有找到!!!!!!!!");
            }
        }  
      
    }  


      结果是:找到:2 个结果!这个例子只是一个入门,让刚刚接觛的人了解下lucene 搜索

官方链接:http://www.liuzm.com/article/java/9114.htm
官方博客:http://www.liuzm.com
1
1
分享到:
评论

相关推荐

    Lucene 简单入门程序实例

    标题与描述:“Lucene简单入门程序实例”这一标题与描述明确指出文章将引导读者通过一个实际的示例来了解和掌握Lucene的基本操作。Lucene是一个高性能、全功能的文本搜索引擎库,它允许用户对文档进行索引和搜索。本...

    lucene 3.0 入门实例

    doc.add(new Field("title", "Lucene入门", Field.Store.YES, Field.Index.ANALYZED)); doc.add(new Field("content", "这是Lucene 3.0的实例", Field.Store.YES, Field.Index.ANALYZED)); ``` 3. **查询...

    lucene3.6入门实例教程

    《Lucene 3.6 入门实例教程》是一份专为初学者设计的指南,旨在帮助用户快速掌握Apache Lucene 3.6版本的基本概念和应用。Lucene是一个高性能、全文检索库,广泛用于构建搜索功能强大的应用程序。这份教程通过完整的...

    Lucene 的入门 实例 代码

    【Lucene 入门教程】 Lucene 是一个由Apache软件基金会开发的开源全文检索引擎工具包,它并非一个完整的搜索引擎,而是提供了一个强大的架构,允许开发人员轻松地在他们的应用程序中集成全文检索功能。Lucene 支持...

    Lucene3.0入门实例含jar包

    **Lucene 3.0 入门实例及关键知识点** Lucene 是一个开源的全文搜索引擎库,由 Apache 软件基金会开发。它为开发者提供了在应用程序中实现文本搜索功能的强大工具。本实例主要针对 Lucene 3.0 版本,这个版本虽然...

    lucene 入门

    `lucene入门小实例.txt` 文件中可能包含了一个简单的Lucene使用示例,例如: 1. 创建 `Directory` 对象,比如使用 `FSDirectory.open()` 打开一个文件系统的目录来存储索引。 2. 实例化 `Analyzer`,如使用 `...

    Apache Lucene3.0 入门实例介绍

    这个入门实例将引导我们了解如何使用Lucene 3.0版本进行基本的索引和搜索操作。以下是对Lucene 3.0关键知识点的详细讲解: 1. **Lucene的架构**: Lucene的核心组件包括文档(Document)、字段(Field)、索引...

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

    《最新全文检索 Lucene-5.2.1 入门经典实例》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种信息检索系统。在5.2.1版本中,Lucene提供了更为高效和强大的搜索功能,为开发者提供了构建...

    lucene入门到项目开发.docx

    《Lucene入门到项目开发》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单但功能强大的API,可以帮助开发者快速实现对文本数据的检索和分析。 一...

    lucene3.6的入门案例

    Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询、评分等,广泛应用于各种项目和产品中。在这个入门案例中,我们将深入理解如何使用 Lucene 3.6 版本来构建...

    lucene 入门资料包

    以上是Lucene入门的基本知识和关键概念,通过深入学习和实践,你可以掌握如何利用Lucene构建强大的全文搜索引擎。记住,实践中遇到的问题往往是最好的学习资源,不断尝试和解决,你将逐渐成为Lucene的专家。

    第一个lucene的简单实例....

    标题 "第一个lucene的简单实例" 提到的是关于Apache Lucene的初步应用,这是一个全文搜索引擎库,常用于Java开发中。Lucene提供了高效的文本搜索功能,使得开发者能够快速地在大量数据中查找相关信息。 描述中的 ...

    Lucene入门demo

    这个“Lucene入门demo”将帮助我们理解如何使用 Lucene 进行基本的索引和搜索操作。 **一、Lucene 的核心概念** 1. **索引(Indexing)**: 在 Lucene 中,索引是文档内容的预处理结果,类似于数据库中的索引。通过...

    lucene3.0全文检索入门实例

    **Lucene 3.0 全文检索入门实例** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级、灵活的搜索功能框架,允许开发者在自己的应用中轻松地集成全文检索功能。本文将重点介绍如何使用 ...

    lucene.net+完全入门教程

    **正文** Lucene.Net是一个基于Apache Lucene的开源全文搜索引擎库,它被移植到...教程可能涵盖从安装步骤、基本概念介绍,到实战案例的详细讲解,帮助初学者快速入门并熟练运用Lucene.Net进行全文搜索引擎的开发。

    搜索篇:Struts、Lucene的Web实例

    2. **Lucene入门**:解释Lucene的核心概念,如Document、Field、Analyzer和IndexWriter,以及如何建立和管理索引。 3. **Struts与Lucene整合**:演示如何在Struts的Action类中调用Lucene进行搜索,以及如何在JSP页面...

    Lucene索引搜索简介以及入门实例源码.rar

    Lucene并不是一个完整的搜索引擎,而是一个工具集,允许开发人员在自己的应用程序中实现搜索功能。这个压缩包中的内容可能是关于如何使用Lucene进行全文检索的一个基础教程和示例代码。 **一、Lucene的基本概念** ...

    Lucene入门示例

    **Lucene入门示例** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。它提供了文本分析、索引创建、文档检索等核心功能,广泛应用于各种搜索应用的开发。本文将从一个简单的Lucene入门示例出发,...

    Java搜索工具——Lucene实例总结(一)

    在Java开发中,搜索引擎已经成为不可或缺的一部分,而Apache Lucene正是一个强大的全文搜索引擎库。这篇博文将带你深入理解Lucene的基本概念和使用方式,帮助你快速入门并掌握其核心功能。 1. **Lucene简介** ...

Global site tag (gtag.js) - Google Analytics