`

lucene四种索引方式详解

    博客分类:
  • Java
阅读更多
1。今天研究了一下lucene,对于初学者来说,有一个地方以前还没怎么弄懂,可能不是很用心吧。今天又写点小的作业,用lucene来实现,对于以前遇到的这点问题进行了总结。


Lucene提供四个不同的字段类型,你可以从中做出选择:
n        Keyword—不被分析,但是被索引并逐字存储到索引中。这个类型适合于原始值需要保持原样的字段,如URL、文件系统路径、日期、个人名称、社会安全号码、电话号码等等。例如,我们在Indexer(列表1.1)中把文件系统路径作为Keyword字段。
n        UnIndexed—不被分析也不被索引,但是它的值存储到索引中。这个类型适合于你需要和搜索结果一起显示的字段(如URL或数据库主键),但是你从不直接搜索它的值。因为这种类型字段的原始值存储在索引中,这种类型不适合于存放比较巨大的值,如果索引大小是个问题的话。
n        UnStored—和UnIndexed相反。这个字段类型被分析并索引但是不存储在索引中。它适合于索引大量的文本而不需要以原始形式重新获得它。例如网页的主体或任休其它类型的文本文档。
n        Text—被分析并索引。这就意味着这种类型的字段可以被搜索,但是要小心字段大小。如果要索引的数据是一个String,它也被存储;但如果数据(如我们的Indexer例子)是来自一个Reader,它就不会被存储。这通常是混乱的来源,所以在使用Field.Text时要注意这个区别。

上面是lucene in Action中写道的,但是以前不是理解的很到位,今天弄明白了些。
1。对于keyword--我们在程序当中可以通过keyword进行查找,并可以通过get(“keyword”)来获取keyword的值
举例:

    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Keyword("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:1234567
    就是
2。对于Unindexed,我们不能通过这个字段来索引,如果你这样做,那么肯定差不到任何值,但是通过其它的如keyword索引后,如Unindexed的字段设为city。你通过keyword查询后,可以通过调用get("city")的值来获取unIndexed的值。

   IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Unndexed("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:null

3. Unstore 这个字段支持索引,但是不保存原始的信息。通过调用get方法获得不了这个字段的值。
    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Keyword("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    打印的结果为:null
   这个字段支持索引,我们可以通过这个字段进行索引,然后调用其他字段的值,但是不能通过其他字段索引调用这个字段的        get方法,那么还是不能够得到所塑要的值。

4. text
    分两种情况
    第一,以String为参数:
    IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Text("telephone","1234567"))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  

    输出结果为1234567
     这是以字符串卫参数,那么既可以支持索引又可以调用这个字段保存的原始信息。
   
    第二种情况
    以文件流为参数
   IndexWriter writer = new IndexWriter(dir, getAnalyzer(), false);
    string keyword="1234567".
    Document doc= new Document();
    doc.add(Field.Text("telephone",new FileReader("hello.txt")))
    doc.close();
    writer.addDocument(doc);
   
    Query query = QueryParser.parse(str, "telephone", new StandardAnalyzer());
    Hits hits = is.search(query);
        for (int i = 0; i < hits.length(); i++) {
            Document doc = hits.doc(i);
            System.out.print(doc.get("telephone"));
        }                  
    假设未见hello.txt中存在1234567这个字符串。
    输出结果为null
   
    这个是以文件流为参数,他不保存原始的文件信息,但是支持索引。所以这个方法和unstore用起来是一样的。
分享到:
评论

相关推荐

    Lucene索引器实例

    **Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个高级的、灵活的、可扩展的接口,使得开发者能够轻松地在应用程序中实现全文...

    Lucene 常用功能介绍视频详解

    Lucene提供了合并段(Merge)和优化索引(Optimize)的功能,以减少索引碎片,提高搜索性能。同时,定期删除已删除的文档和重建索引也是维护工作的一部分。 通过学习和实践这些基本功能,开发者可以构建出高效、...

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

    二、Lucene索引创建流程 1. 初始化:首先,我们需要导入Lucene库,并创建一个标准的Analyzer,例如StandardAnalyzer,它对输入的文本进行标准化处理。 2. 创建索引目录:索引数据会存储在一个Directory对象中,...

    lucene5+zoie实现近实时索引

    《Lucene 5 + Zoie 实现近实时索引详解》 在当今大数据时代,搜索引擎技术扮演着至关重要的角色,而Lucene作为一款强大的全文搜索引擎库,被广泛应用于各种信息检索系统。然而,传统的Lucene在处理大规模数据时,...

    Lucene3.0之查询类型详解

    【Lucene3.0查询类型详解】 在Lucene3.0中,查询处理是一个关键环节,涉及多种查询方式和理论模型。以下是对这些概念的详细解释: 1. **查询方式**: - **顺序查询**:是最简单的查询方式,直接遍历索引,效率较...

    Lucene开发详解.pdf

    ### Lucene开发详解 #### 一、Lucene简介 Lucene是一个高性能、全功能的文本搜索引擎库,由Doug Cutting创建并捐赠给Apache Software Foundation。它主要用于构建全文搜索应用程序,能够帮助开发者快速地在其应用...

    Lucene.net建立索引,检索分页Demo

    **Lucene.net 知识点详解** Lucene.net 是 Apache Lucene 的 .NET 版本,它是一个开源、高性能、全文检索库,适用于各种 .NET 应用程序。Lucene 提供了强大的文本分析、索引创建、文档检索以及搜索结果排序等功能。...

    Lucene 实时搜索视频详解

    在"Lucene 实时搜索视频详解"的课程中,我们将深入探讨如何利用 Lucene 实现高效且实时的搜索功能。 一、Lucene 基础 1. **索引过程**:Lucene 的核心概念之一是建立索引,将原始文本数据转化为可快速查询的结构。...

    lucene、lucene.NET详细使用与优化详解

    《lucene、lucene.NET 详细使用与优化详解》 lucene 是一个广泛使用的全文搜索引擎库,其.NET版本称为lucene.NET,它提供了强大的文本检索和分析能力,适用于各种场景下的全文搜索需求。lucene 并非一个可以直接...

    luke-7.1.0 lucene索引查看工具

    **luke-7.1.0:Lucene索引查看工具详解** Luke是Apache Lucene项目的一个重要辅助工具,主要用于查看、分析和测试Lucene创建的索引。这个7.1.0版本提供了对Lucene索引的强大洞察力,帮助开发者、搜索引擎优化者以及...

    详解SpringBoot+Lucene案例介绍

    SpringBoot与Lucene集成案例详解 本文将详细介绍如何将SpringBoot与Lucene集成,以实现站内搜索系统。 Lucene是一个高性能的全文检索引擎,它可以帮助我们快速地检索大量的文本数据。 一、案例介绍 在本案例中,...

    Hibernate 与 Lucene 的整合框架详解

    ### Hibernate 与 Lucene 的整合框架详解 #### 一、概述 在软件开发领域,特别是企业级应用开发中,高效的数据检索与管理是至关重要的。Hibernate 和 Lucene 分别作为对象关系映射(ORM)工具和全文搜索引擎,在...

    Lucene索引分析工具

    **Lucene索引分析工具详解** Lucene是一个高性能、全文本搜索库,它为开发者提供了在应用程序中实现全文检索功能的基础。在这个场景中,我们关注的是一个专门针对Lucene.net的索引分析工具,该工具被称为"Lucene...

    Lucene分词与查询详解

    **Lucene分词与查询详解** Lucene是一个高性能、全文本搜索库,广泛应用于各种搜索引擎的开发中。它提供了一套强大的API,用于索引文本数据,并执行复杂的查询操作。在深入理解Lucene的分词与查询机制之前,我们...

    Lucene索引文件格式

    《Lucene索引文件格式详解》 Lucene,作为一款强大的全文搜索引擎库,其索引文件格式是实现高效搜索的关键。本文将深入解析Lucene 1.3版本的索引文件结构,帮助读者理解其内部运作机制。 首先,我们要理解Lucene...

    lucene搜索引擎配置详解

    倒排索引是一种数据结构,将每个单词映射到包含该词的文档列表。在Lucene中,可以设置分词器(Analyzer)来处理文本,如中文分词器`ICUAnalyzer`或`SmartChineseAnalyzer`,确保正确切分中文词汇。 ### 分词与分析 ...

    Lucene 概述视频详解

    1. **索引**:在Lucene中,数据不是直接存储的,而是被转换为一种叫做索引的数据结构。索引是经过分析和分词后的文档内容,使得搜索过程可以快速定位到相关的文档。 2. **文档**:在Lucene中,一个文档可以包含多个...

    Lucene中文分词源码详解

    Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引 擎,还是论坛中的搜索功能,还是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql...

Global site tag (gtag.js) - Google Analytics