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

创建索引和搜索初步

阅读更多

今天星期天抽空写了一个关于创建索引和搜索的简单示例,描述了创建索引和搜索的每一个步骤,以后慢慢详细介绍每个细节的实现,废话不多说了,进入重点

1.用到的Jar:

2.创建索引和搜索代码如下:

import org.apache.lucene.analysis.standard.StandardAnalyzer;

import org.apache.lucene.document.Document;

import org.apache.lucene.document.Field;

import org.apache.lucene.document.StringField;

import org.apache.lucene.document.TextField;

import org.apache.lucene.index.DirectoryReader;

import org.apache.lucene.index.IndexReader;

import org.apache.lucene.index.IndexWriter;

import org.apache.lucene.index.IndexWriterConfig;

import org.apache.lucene.queryparser.classic.QueryParser;

import org.apache.lucene.search.IndexSearcher;

import org.apache.lucene.search.Query;

import org.apache.lucene.search.ScoreDoc;

import org.apache.lucene.search.TopDocs;

import org.apache.lucene.store.Directory;

import org.apache.lucene.store.FSDirectory;

import org.apache.lucene.util.Version;

import java.io.File;

import java.io.FileReader;

 

/**

 * 创建索引和搜索

 * Created by Administrator on 14-3-12.

 */

public class HelloLucenes {

    /**

     * 创建索引

     */

    public void createIndex(){

        try

        {

        //1.创建Directory

        Directory directory=FSDirectory.open(new File("d:/lucene/index0"));

        //2.创建IndexWriter

        IndexWriterConfig iwc=new IndexWriterConfig(Version.LUCENE_47, new StandardAnalyzer(Version.LUCENE_47));

        IndexWriter writer=new IndexWriter(directory,iwc);

        //3.创建Document对象

        Document document=null;

        //4.为Document添加Field

         File file=new File("d:/lucene/data");

         for(File f:file.listFiles())

         {

             document=new Document();

             document.add(new StringField("path", f.getAbsolutePath(), Field.Store.YES));

             document.add(new StringField("filename",f.getName(), Field.Store.YES));

             document.add(new TextField("content",new FileReader(f)));

             //5.通过IndexWriter添加文档到索引中

             writer.addDocument(document);

         }

            writer.close();

        }catch (Exception ex)

        {

            ex.printStackTrace();

        }

    }

 

    /**

     * 创建搜索

     */

    public void createSearch()

    {

        try{

            //1、创建Directory

            Directory directory= FSDirectory.open(new File("d:/lucene/index0"));

            //2、创建IndexReader

            IndexReader reader=DirectoryReader.open(directory);

            //3、根据IndexReader创建IndexSearch

            IndexSearcher searcher=new IndexSearcher(reader);

            //4、创建搜索的Query(赤岸感觉Parser来去顶要搜索的文件的内容,第二个参数标示搜索的域)

            QueryParser parser=new QueryParser(Version.LUCENE_47,"content",new StandardAnalyzer(Version.LUCENE_47));

            Query query=parser.parse("father");

            //5、根据search搜索并且返回TopDocs

            TopDocs tds=searcher.search(query,10);

            //6、根据TOpDocs获取ScoreDoc对象

            ScoreDoc[] sds=tds.scoreDocs;

            for(ScoreDoc sd:sds)

            {

                //6、根据search和ScordDoc对象获取具体的Document对象

                Document d=searcher.doc(sd.doc);

                //8、根据Document对象获取需要的值

                System.out.println(d.get("filename")+"["+d.get("path")+"]");

            }

            //9、关闭reader

            reader.close();

 

        }catch (Exception ex)

        {

 

        }

 

    }

 

}

3.创建测试类代码如下:

import org.junit.Test;

 

/**

 * 单元测试类

 * Created by Administrator on 14-3-12.

 */

public class HelloLucenesTest {

 

    @Test

    public  void hello(){

        HelloLucenes hl=new HelloLucenes();

        hl.createIndex();

    }

 

    @Test

    public void search(){

        HelloLucenes hl=new HelloLucenes();

        hl.createSearch();

    }

}

4.目标数据文件如下图所示:



 

5.运行创建索引方法的结果如下图:



 6.运行搜索方法结果如下:



 


 

  • 大小: 24.4 KB
  • 大小: 27.8 KB
  • 大小: 19.9 KB
  • 大小: 35 KB
分享到:
评论

相关推荐

    oracle索引学习初步

    3. Function-Based索引:基于函数的结果创建索引,适用于需要对列进行特定计算的查询。 4. Unique索引:确保索引列的唯一性,防止插入重复值。 5. Clustered索引(非Oracle特性):在某些数据库系统中,索引决定了...

    Lucene实战视频教程

    资源名称:Lucene实战视频教程资源目录:【】01_lucenc简介和创建索引初步【】02_lucene简介和搜索初步【】03_lucene索引_创建_域选项【】04_lucene索引_的删除和更新【】05_lucene索引_加权操作和Luke的简单演示...

    各大搜索引擎提交入口

    【搜索引擎提交入口】是网站管理员或SEO优化人员用于将新创建或更新的网站提交到各大搜索引擎,以便于被搜索引擎快速收录和索引的关键途径。这些入口是搜索引擎为网站所有者提供的一个官方渠道,通过提交URL,可以...

    全文检索初步学习笔记

    Oracle Text的工作流程包括创建索引、插入文档、查询和更新索引等步骤。 1. 创建索引 在Oracle中,首先需要创建一个Text索引,定义索引的表和字段,以及语言环境。索引类型可以是反向索引或位图索引,反向索引适用...

    强力搜索器

    首先,初次使用时要允许软件创建索引,这一步对后续的快速搜索至关重要。其次,定期更新索引可以保持搜索结果的准确性。最后,如果系统资源有限,可以在不使用时关闭软件的后台服务,以减少系统负担。 在日常工作中...

    解密搜索引擎7-9章

    这一章会介绍Lucene的API用法,包括文档的创建、索引的建立、查询解析和结果排序等功能。还会探讨Lucene的高级特性,如多字段搜索、近似搜索、模糊搜索和 faceted search(分类搜索)。此外,还会讲解如何利用Lucene...

    基于Lucene的MYSearch全文搜索引擎

    3. **建立索引模块**:利用Lucene提供的索引功能,对预处理后的文本信息进行中文分词,并创建索引。 4. **搜索模块**:提供用户界面供用户输入查询条件,然后在索引数据库中进行搜索。 5. **结果显示模块**:将搜索...

    基于Javaweb的搜索引擎的实现报告模板.docx

    在这个项目中,Lucene被用来创建索引并执行对索引的搜索操作。胡杨负责实现这一部分,包括页面索引的建立和搜索功能。 3. **Tika页面解析器**: Tika是一个能够解析多种格式的元数据和内容的库。在搜索引擎实现...

    ASP.NET源码——[搜索链接]易搜索 站内全文检索搜索引擎 v1.0_yssfor_new_63.zip

    1. **索引构建器**:这部分代码负责读取网站内容,创建索引数据库。索引数据库中存储了文档的关键信息,如单词、出现位置、频率等。 2. **查询处理器**:当用户输入查询时,这部分代码解析查询字符串,匹配索引,...

    Nutch开源搜索引擎增量索引recrawl的终极解决办法续

    在前一篇文章中,我们探讨了Nutch开源搜索引擎在进行增量索引更新(recrawl)时遇到的问题及其初步解决方案。然而,在实际操作过程中发现,尽管解决了基本的增量更新逻辑,但在执行`indexmerge`命令后,新旧索引合并...

    医学五年制检索课-第4章网络搜索引擎.ppt

    它们通过收集、整理和索引网络资源,创建庞大的数据库,并提供方便的查询接口,使用户能够在海量数据中快速定位目标。 【搜索引擎的类型】 1. **索引式搜索引擎**:也叫机器人搜索引擎,如Google,主要通过网络...

    Lucene搜索引擎开发权威经典

    `IndexWriter`用于创建和更新索引,而`Directory`是存储索引的地方,常见的实现有文件系统和内存。`Document`对象代表单个要索引的文档,可以包含多个字段,如标题、内容等。`Field`类定义了字段的类型和特性,如...

    ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现(源代码+LW).zip

    Lucene.Net是Lucene的.NET版本,它为.NET开发者提供了与Java版本相似的功能,包括文本分析、索引创建、搜索和排序等。 在压缩包的文件列表中,可以看到多个与Lucene.Net相关的文件,如`CharStream.cs`、`...

    Lucene.Net实现的搜索引擎框架(改自CSDN资源)

    4. **创建索引**: 使用IndexWriter将处理后的文档写入索引。 5. **查询处理**: 用户输入查询,QueryParser解析成查询对象。 6. **搜索执行**: Searcher使用查询对象在索引中查找匹配的文档。 7. **结果排序**: ...

    c# 开源搜索引擎完整的例子

    3. **索引构建**:搜索引擎需要创建一个高效的索引结构,以便快速查找相关文档。常见的索引结构有倒排索引,它将单词映射到包含这些单词的文档集合。C#中可以自定义数据结构实现,或者使用Lucene.NET这样的全文检索...

    查看索引的工具类lukeall

    **lukeall** 是一个非常实用的开源工具,主要用于查看和分析Apache Lucene创建的索引。Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎和信息检索系统。而lukeall则是Lucene的一个扩展,它提供了一个...

    全文搜索引擎lucene入门

    1. **创建索引(Indexing)**:Lucene首先读取文档内容,通过Analyzer进行分词处理,然后将这些词元存储在倒排索引(Inverted Index)中。倒排索引是一种高效的数据结构,它为每个词元维护一个文档列表,记录包含该...

    谷谷搜图片搜索仿百度 v1.0.rar

    2. **网络爬虫技术**:为了收集和索引大量图片,需要编写能够自动访问并下载网页的程序,这涉及到HTTP协议的理解,以及解析HTML、CSS选择器和正则表达式等技能。 3. **数据库管理**:抓取的图片和相关信息需要存储...

Global site tag (gtag.js) - Google Analytics