`
henry2009
  • 浏览: 93494 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

代码日记--lucene3.0.1

    博客分类:
  • java
阅读更多
/**
   * Returns a DocIdSet with documents that should be
   * permitted in search results.
   */
  @Override
  public DocIdSet getDocIdSet(IndexReader reader) throws IOException {
    final TermEnum enumerator = query.getEnum(reader);//把过滤好的数据倒排出来
    try {
      // if current term in enum is null, the enum is empty -> shortcut
      if (enumerator.term() == null)
        return DocIdSet.EMPTY_DOCIDSET;
      // else fill into a OpenBitSet
      
      //lucene3最大的改动之一就是使用了这个OpenBitSet。
      //OpenBitSet在处理64位数据或32位方面有较大改进
      //认真看了下。里面的fastget,fastset是重点方法。过滤结果用得比较多。
      final OpenBitSet bitSet = new OpenBitSet(reader.maxDoc());
      
      final int[] docs = new int[32];    //这个32估计改成64野没问题,最终决定在下面                                            
      final int[] freqs = new int[32];
      TermDocs termDocs = reader.termDocs();
      try {
        int termCount = 0;
        do {
          Term term = enumerator.term();
          if (term == null)
            break;
          termCount++;
          termDocs.seek(term);
          while (true) {
            final int count = termDocs.read(docs, freqs);//这里决定了最终过滤出来的文档号
            if (count != 0) {
              for(int i=0;i<count;i++) {
                bitSet.set(docs[i]);
              }
            } else {
              break;
            }
          }
        } while (enumerator.next());//重复循环

        query.incTotalNumberOfTerms(termCount);//存过滤出来的term个数。

      } finally {
        termDocs.close();
      }
      return bitSet;
    } finally {
      enumerator.close();
    }
  }

 lucene中MultiTermQueryWrapperFilter<Q extends MultiTermQuery>,TermRangeFilter过滤操作源代码。

 这个过滤方法,个2.0版本的方法没多大改变,只是原来是返回BitSet,现在是OpenBitSet。日后再看看,这么改起什么重要作用~~

分享到:
评论

相关推荐

    lucene-analyzers-3.0.1.jar

    lucene-analyzers-3.0.1.jar,lucene-analyzers-3.0.1.jar

    lucene-3.0.1库及源代码

    本文将围绕“lucene-3.0.1”库和源代码,深入探讨其核心概念、主要特性以及如何进行开发和调试。 一、Lucene 3.0.1核心概念 1. **倒排索引**:Lucene的核心在于其倒排索引机制,这种索引方式能快速找到包含特定...

    lucene 3.0.1 jar包

    lucene-core-3.0.1.jar(核心包) contrib\analyzers\common\lucene-analyzers-3.0.1.jar(分词器) contrib\highlighter\lucene-highlighter-3.0.1.jar(高亮) contrib\memory\lucene-memory-3.0.1.jar(高亮)

    lucene-highlighter-3.0.1.jar

    lucene-highlighter-3.0.1.jar 还在为找不到jar文件烦心吗,不用了到我空间来有你想要的,持续更新。

    lucene-memory-3.0.1-sources.jar

    lucene-memory-3.0.1-sources.jar

    lucene-analyzers-3.0.1-sources.jar

    lucene-analyzers-3.0.1-sources.jar

    lucene-core-2.9.4,lucene-core-3.0.2,lucene-core-3.0.3,lucene-core-3.4.0

    《Apache Lucene核心技术详解:从2.9.4到3.4.0的演变》 Apache Lucene,作为开源的全文检索库,是Java开发人员进行高效信息检索的重要工具。这个压缩包文件包含了Lucene从2.9.4版本到3.4.0版本的核心组件,让我们...

    lucene-smartcn-3.0.1.jar

    lucene-smartcn-3.0.1.jar,lucene-smartcn-3.0.1.jar

    paoding-webx3-solr-lucene

    压缩包中的"webx3-paoding-lucene"文件可能包含了项目的源代码、配置文件以及相关的依赖库。开发者可以通过分析这个文件来了解项目的具体实现细节,如Webx3的配置、Paoding的分词规则、Solr的索引结构等。这为自定义...

    lucene-memory-3.0.1.jar

    lucene-memory-3.0.1.jar

    lucene-3.0.1-src.zip

    在 `lucene-3.0.1` 压缩包中,我们可以找到以下主要组成部分: 1. **src**: 这个目录包含了 Lucene 的源代码,你可以通过阅读这些源码来理解 Lucene 的工作原理。源码分为多个子模块,如 analysis(分析器),core...

    je-analysis-1.5.3;lucene-core-2.9.2

    本话题聚焦于"je-analysis-1.5.3"和"lucene-core-2.9.2"这两个特定的jar包。 首先,"je-analysis-1.5.3"很可能是一个针对Java环境的文本分析工具包。"JE"可能是“Java Edition”的缩写,而"analysis"通常与文本处理...

    Lucene3.0.1 jar包

    **Lucene 3.0.1 全文检索引擎** Lucene 是 Apache 软件基金会的一个开源项目,它是一个高性能、全文本搜索库,提供了一个简单但功能强大的API,用于在各种应用中实现全文检索功能。Lucene 3.0.1 版本是该库的一个...

    基于java的开发源码-搜索引擎 Lucene.zip

    基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于java的开发源码-搜索引擎 Lucene.zip 基于...

    Lucene-3.0.1API

    Lucene-3.0.1API,包含用例。

    je-analysis-1.5.3、lucene-core-2.4.1分词组件

    本文将深入探讨"je-analysis-1.5.3"和"lucene-core-2.4.1"这两个分词组件,以及它们在相关场景中的应用。 首先,让我们了解什么是分词。分词,即词语切分,是自然语言处理(NLP)中的基本任务之一,它的目标是将...

    开发自己的搜索引擎---Lucene+Heritrix(第2版)

    开发自己的搜索引擎---Lucene+Heritrix(第2版)。超星导出来的,非常清晰。CSDN上传限制60MB,点击我的用户名查看part2。

    自己整理的 最新的 lucene-3.0.1_api

    《全面解析:Lucene-3.0.1 API——基于最新整理资料》 在信息技术日新月异的今天,搜索引擎技术扮演着至关重要的角色。Apache Lucene,作为一款开源的全文检索库,为开发者提供了强大的文本搜索功能。本文将基于...

    nexus-indexer-lucene-plugin-2.6.1-01.zip

    标题 "nexus-indexer-lucene-plugin-2.6.1-01.zip" 提供的信息表明,这是一个与Nexus仓库管理器相关的Lucene插件。Nexus是Sonatype公司提供的一个强大的Maven、NPM、Yarn、RubyGems、Python、Composer等软件包仓库...

Global site tag (gtag.js) - Google Analytics