`
lw223
  • 浏览: 99454 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene笔记(搜索的小例子)

    博客分类:
  • java
阅读更多

今天上午本来再看火箭VS马刺的比赛,但是火箭打得太烂了,第一节看完我就关了,没事可做我就开始看我买的新书Ajax+lucene,看了看lucene部分的前几章,发现我下载的lucene2.0和书中用到的lucene1.4差别挺大的,在这里把我在网上查到的修改的方法写出来,以后查找就方便多了。

首先在你的c盘建立一个test文件加,里面放入四个.txt文件 其中a.txt输入“中华人民共和国” b.txt输入“人民共和国” c.txt输入“人民” d.txt输入“共和国”。c盘下在建立一个index文件,只是作为索引存放目录的。

然后在eclipse中新建一个java项目,输入项目名称LuceneHelloWord,然后点击下一步,找到“库”然后“添加外部jar ”,把你的lucene包添加进去就可以了,我的是lucene-core-2.0.0.jar。

在项目中建三个类,Constants.java是用来存储一些常量的类,如索引文件的路径和索引文件的存放位置

代码

package testlucene;

public class Constants ...{
    
// 要索引的文件的存放路径
    public final static String INDEX_FILE_PATH = "c:\test";

    
// 索引的存放位置
    public final static String INDEX_STORE_PATH = "c:\index";

}

 

LuceneIndex.java是用来对文件建立索引的类。代码

package testlucene;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;

public class LuceneIndex ...{

    
public static void main(String[] args) throws Exception ...{
        
// 声明一个对象
        LuceneIndex indexer = new LuceneIndex();
        
// 建立索引
        Date start = new Date();
        indexer.writeToIndex();
        Date end 
= new Date();
        System.out
                .println(
"建立索引时用:" + (end.getTime() - start.getTime()) + "毫秒");
        
// 关闭索引器
        indexer.close();
    }


    
public LuceneIndex() ...{
        
try ...{
            writer 
= new IndexWriter(Constants.INDEX_STORE_PATH,
                    
new StandardAnalyzer(), true);
        }
 catch (Exception e) ...{
            e.printStackTrace();
        }

    }


    
// 索引器
    private IndexWriter writer = null;

    
// 将要建立索引的文件构造成一个Document对象,并添加一个域"Content"
    private Document getDocument(File f) throws Exception ...{
        
// 生成文档对象
        Document doc = new Document();
        
// 获取文件流
        FileInputStream is = new FileInputStream(f);
        Reader reader 
= new BufferedReader(new InputStreamReader(is));
        
// 添加索引内容
        doc.add(new Field("contents", reader));
        doc.add(
new Field("path", f.getCanonicalPath(), Field.Store.YES,
                Field.Index.NO));
        
return doc;
    }


    
public void writeToIndex() throws Exception ...{
        File folder 
= new File(Constants.INDEX_FILE_PATH);
        
if (folder.isDirectory()) ...{
            String[] files 
= folder.list();
            
for (int i = 0; i < files.length; i++...{
                File file 
= new File(folder, files[i]);
                Document doc 
= getDocument(file);
                System.out.println(
"正在建立索引" + file + "");
                writer.addDocument(doc);
            }

        }

    }


    
public void close() throws Exception ...{
        writer.close();
    }


}

 

 

luceenSearch.java适用于检索索引的类。代码:

package testlucene;

import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;

public class LuceneSearch ...{
 
public static void main(String args[])throws Exception...{
     LuceneSearch test 
= new LuceneSearch();
     
//检索“人民”这个关键词
     Hits h = null;
     h 
= test.search("华人");
     test.printResult(h);
     h 
= test.search("共和");
     test.printResult(h);
     h 
= test.search("");
     test.printResult(h);     
 }

 
public LuceneSearch()...{
     
try...{
         searcher 
= new IndexSearcher(IndexReader.open(Constants.INDEX_STORE_PATH));
     }
catch(Exception e)...{
         e.printStackTrace();
     }

 }

 
//声明一个IndexSearcher对象
 private IndexSearcher searcher = null;
 
//声明一个Query对象
 private Query query = null;
 
 
public final Hits search(String keyword)...{
     System.out.println(
"正在检索关键字:"+keyword);
     
try...{
         
//将关键字包装成Query对象
         query = new QueryParser("contents",new StandardAnalyzer()).parse(keyword);
         
         Date start 
= new Date();
         Hits hits 
= searcher.search(query);
         Date end 
= new Date();
         System.out.println(
"检索完成,用时:"+(end.getTime()-start.getTime())+"毫秒");
         
return hits;
     }
catch (Exception e)...{
         e.printStackTrace();
         
return null;
     }

 }

 
public void printResult(Hits h)...{
     
if(h.length()==0)...{
         System.out.println(
"对不起,没有找到您要的结果。");
     }

     
else
     
...{
         
for(int i=0;i<h.length();i++)...{
分享到:
评论

相关推荐

    lucene入门小例子

    Lucene是中国大百科全书式的全文检索库,它在Java世界中扮演着核心角色,为开发者提供了强大的...总之,Lucene是一个强大且灵活的全文检索工具,通过这个入门小例子,你可以逐步揭开其神秘的面纱,踏入文本搜索的世界。

    一个基于LUCENE搜索引擎项目例子

    在这个项目例子中,我们将深入探讨如何利用Lucene进行索引构建、查询处理以及结果排序,从而创建一个功能完善的搜索引擎。 首先,我们需要了解Lucene的基本概念。Lucene的核心功能包括文本分析、索引构建和搜索。...

    LUCENE的搜索引擎例子

    在IT行业中,Lucene是一个非常重要的开源全文搜索引擎库,由Apache软件基金会开发并维护。本篇文章将深入探讨如何在B/S(浏览器/服务器)架构下利用Lucene实现一个简单的搜索引擎实例。 首先,我们需要了解Lucene的...

    lucene全文搜索ajax例子

    总的来说,这个例子是一个综合性的Web应用,它展示了如何利用Lucene进行全文搜索,结合Ajax技术实现动态更新的搜索结果展示,同时还包括了高亮显示和多次搜索的功能。这对于学习和理解Lucene在实际应用中的工作原理...

    lucene笔记.pdf

    lucene笔记

    lucene检索小例子

    这个"lucene检索小例子"程序展示了如何利用Lucene的强大功能来构建索引和执行搜索操作。Lucene的核心特性包括文本分析、索引创建、查询解析以及高效的搜索算法,使得开发者能够轻松地在大量文本数据中实现快速、准确...

    lucene 搜索引擎小例子

    **Lucene 搜索引擎简介** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发并维护。它提供了完整的搜索功能,包括索引、查询、排序等,适用于各种应用程序添加搜索功能。Lucene 并不是一个完整的搜索...

    lucene与quartz例子

    lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子lucene quartz 例子

    lucene例子(一个完整的,lucene例子)(lucenetest.rar,lucene,全文检索,lucene例子)

    lucenetest.rar,lucene,全文检索,lucene例子 lucenetest.rar,lucene,全文检索,lucene例子lucenetest.rar,lucene,全文检索,lucene例子

    lucene笔记

    Lucene不仅仅是一个简单的搜索工具,而是一个完整的搜索引擎开发平台,它提供了构建复杂搜索应用所需的各种组件。 **1.2 全文检索的应用场景** - **搜索引擎**: 如谷歌、百度等全球性的搜索引擎。 - **站内搜索**:...

    lucene3.6 搜索例子

    《Lucene 3.6 搜索实例解析》 Apache Lucene 是一个开源全文搜索引擎库,为开发者提供了在Java应用程序中实现高效、可扩展的搜索功能的工具。在本篇文章中,我们将深入探讨Lucene 3.6版本中的搜索功能,通过实例...

    lucene使用总结笔记

    lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记

    Lucene4.7-Web 例子

    《Lucene4.7在Web应用中的实践:结合SpringMVC与MyBatis3》 在信息化时代,搜索引擎已经成为我们日常获取信息的重要工具。Apache Lucene作为一款强大的全文...希望这个实例能帮助你更好地理解和应用Lucene搜索引擎。

    lucene笔记共38页.pdf.zip

    《Lucene笔记共38页.pdf》是一部深入探讨Apache Lucene全文搜索引擎库的详细资料,这份笔记涵盖了Lucene的核心概念、关键技术和实际应用。Lucene是Java开发的开源信息检索库,广泛应用于各种搜索和信息提取场景。...

    lucene3小例子

    在这个“lucene3小例子”中,我们将探讨如何利用Lucene 3.x版本进行基本的全文搜索操作。 首先,我们需要了解Lucene的核心概念。Lucene的主要组成部分包括索引(Indexing)、查询(Querying)和搜索(Searching)。...

    Lucene笔记.doc

    Apache Lucene 是一个开源的全文检索库,属于Java开发的文本搜索工具包。它不是一个完整的搜索引擎,而是一组用于构建全文检索应用的基础组件。Lucene提供了核心的索引和搜索功能,包括分词、建立倒排索引、评分以及...

    Lucene 7.1 RMI远程搜索例子

    总的来说,Lucene 7.1 RMI远程搜索例子展示了如何将强大的Lucene搜索引擎与Java的RMI技术结合,构建一个可扩展、健壮的分布式搜索系统。通过理解和实践这一例子,开发者可以进一步提升其在分布式全文检索领域的技能...

    lucene开发部分例子

    在IT领域,Lucene是一个非常重要的全文检索库,由Apache软件基金会开发,广泛应用于各种搜索引擎的构建。这个压缩包文件“lucene开发部分例子”包含了关于Lucene开发的一些实例,涵盖了从基础到进阶的多个方面,对于...

Global site tag (gtag.js) - Google Analytics