<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Lucene on 知识铺的博客</title>
    <link>https://index.zshipu.com/geek/tags/lucene/</link>
    <description>Recent content in Lucene on 知识铺的博客</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 15 Mar 2022 10:37:16 +0800</lastBuildDate>
    <atom:link href="https://index.zshipu.com/geek/tags/lucene/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>解析基本概念</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%A7%A3%E6%9E%90%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/</link>
      <pubDate>Tue, 15 Mar 2022 10:37:16 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%A7%A3%E6%9E%90%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5/</guid>
      <description>前言 Apache Lucene是一个开源的高性能、可扩展的信息检索引擎，提供了强大的数据检索能力。Lucene已经发展了很多年，其功能越来越强大，架构也越来越精细。它目前不仅仅能支持全文索引，也能够提供多种其他类型的索引方式，来满足不同类型的查询需求。 基于Lucene的开源项目有很多，最知名</description>
    </item>
    <item>
      <title>源码系列索引文件的生成九之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B9%9D%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 10:36:02 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B9%9D%E4%B9%8B/</guid>
      <description>上一篇文章中，我们介绍了在索引（index）阶段，Lucene 收集了跟点数据相关的信息，这些信息在 flush 阶段会被读取，用于生成索引文件。dim&amp;amp;&amp;amp;.dii，从本文开始介绍索引文件。dim&amp;amp;&amp;amp;.dii 生成的详细过程，如图 1 所示，另外阅读本文中需要前置知识</description>
    </item>
    <item>
      <title>构造对象三</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%89/</link>
      <pubDate>Tue, 15 Mar 2022 10:25:08 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%89/</guid>
      <description>查看原文 系列文章： 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 构造一个 IndexWriter 对象的流程总体分为下面三个部分： 设置索引目录 Directory 设置 IndexWriter 的配置信息 IndexWriterConfig 调用 IndexWriter 的构造函数 大家可以查看文章 构造 IndexWriter 对象（一）、 构造 IndexWriter 对象（二） 来了解前两部分的内容，我们接着继续介绍最后一个部分，即调用 IndexWriter 的构造函数。 IndexWriter 类有且仅有一个有</description>
    </item>
    <item>
      <title>源码系列索引文件的生成二之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%BA%8C%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 10:10:53 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%BA%8C%E4%B9%8B/</guid>
      <description>生成索引文件。tim、.tip、.doc、.pos、.pay 的流程图 图 1： 我们继续介绍流程点 生成索引文件.doc、.pos、.pay。 生成索引文件.doc、.pos、.pay 的流程图 图 2： 记录位置信息 position、payload、偏移信息 offset 图 3： 当前 term 在一篇文档中的所有位置信</description>
    </item>
    <item>
      <title>源码系列索引文件的生成十二之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%BA%8C%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 10:02:42 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%BA%8C%E4%B9%8B/</guid>
      <description>本文承接 索引文件的生成（十一），继续介绍剩余的内容，为了便于下文的介绍，先给出 生成索引文件.dim&amp;amp;&amp;amp;.dii 的流程图以及流程点构建BKD树的节点值（node value）的流程图： 图1： 图2： 在前面的文章中，我们介绍了图2中处理内部节点的所有流程点，在介绍处理叶子</description>
    </item>
    <item>
      <title>词元过滤器</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%AF%8D%E5%85%83%E8%BF%87%E6%BB%A4%E5%99%A8/</link>
      <pubDate>Tue, 15 Mar 2022 10:02:12 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%AF%8D%E5%85%83%E8%BF%87%E6%BB%A4%E5%99%A8/</guid>
      <description>本文禁止转载 word_delimiter_graph 使用非字母字符切分 tokens，并可以根据规则执行一些可选的 token 正则化。默认情况下， word_delimiter_graph 会使用以下规则： 使用非字母字符作为切分点。 比如 Super-Duper → Super, Duper 移除每个 token 前置和后置分隔符。比如 XL---42+&#39;Autocoder&#39; → XL, 42, Autocoder 在单词大小写过度位置做切分。 比如 PowerShot → Power, Shot 在单词字母和数字过度位置切分。 比如 XL500 → XL, 500 移除</description>
    </item>
    <item>
      <title>源码系列倒排表</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%80%92%E6%8E%92%E8%A1%A8/</link>
      <pubDate>Tue, 15 Mar 2022 09:31:24 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%80%92%E6%8E%92%E8%A1%A8/</guid>
      <description>原文： https://www.amazingkoala.com.cn/Lucene/Index/2019/0222/36.html 本篇文章介绍如何生成倒排表，通过一个简单的例子来讲解倒排表的底层存储结构。文章中不会给出详细的源码介绍，只有一些必要的对象，感兴趣的朋友可以看我的 GitHub，对构建倒排表的源码给出了详细的注释： https://github.com/luxugang/Lucene-7.5.0/blob/master/solr-7.5.0/lucene/core/src/java/org/apache/lucene/index/DefaultIndexingChain.java ，此类中的该方法是开始构建倒排表的入口。 另外如果某些域使用了词向量(Ter</description>
    </item>
    <item>
      <title>构造对象七</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%83/</link>
      <pubDate>Tue, 15 Mar 2022 09:28:46 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%83/</guid>
      <description>构造 IndexWriter 对象（五） 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（六），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 生成对象 IndexFileDeleter 在文章 构造 IndexWriter 对象（六） 中，我们简单介绍了 IndexFileDeleter 作用，即用来删除索引目录中的索引文件，本文根据 IndexFileDeleter 的构造函数的</description>
    </item>
    <item>
      <title>番外篇索引流程与倒排索引实现</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E7%95%AA%E5%A4%96%E7%AF%87%E7%B4%A2%E5%BC%95%E6%B5%81%E7%A8%8B%E4%B8%8E%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%AE%9E%E7%8E%B0/</link>
      <pubDate>Tue, 15 Mar 2022 09:28:13 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E7%95%AA%E5%A4%96%E7%AF%87%E7%B4%A2%E5%BC%95%E6%B5%81%E7%A8%8B%E4%B8%8E%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%AE%9E%E7%8E%B0/</guid>
      <description>前两篇文章主要围绕Lucene的底层索引文件结构方面介绍了倒排索引原理： http://www.6aiq.com/article/1564413040138 http://www.6aiq.com/article/1564413209435 在Lucene中，写数据的基本单元称之为Document，本文将介绍一个Document写入Lucene后的索引全流程。 基础概念 ** ** 如下几个概念，Lucene的Document中给出了明确的定义，在这里先</description>
    </item>
    <item>
      <title>源码系列去重编码</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%8E%BB%E9%87%8D%E7%BC%96%E7%A0%81/</link>
      <pubDate>Tue, 15 Mar 2022 09:24:58 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%8E%BB%E9%87%8D%E7%BC%96%E7%A0%81/</guid>
      <description>原文： https://www.amazingkoala.com.cn/Lucene/yasuocunchu/2019/0130/29.html 去重编码是 Lucene 中对 int 类型数据的一种压缩存储方式，在 FacetsConfig 类中用到此方法来处理 int 类型数据。其优点在于，存储一个原本需要固定 4 个字节空间大小的 int 类型的数据，最好的情况下只要 1 个字节，最差的情况下需要 5 个字节。 处理过程 去重编码的过程主要分三步： 排序 去重 差值存储 关系图 根据 int 数值的大小，</description>
    </item>
    <item>
      <title>源码系列索引文件的生成三之跳表</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B8%89%E4%B9%8B%E8%B7%B3%E8%A1%A8/</link>
      <pubDate>Tue, 15 Mar 2022 09:24:55 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B8%89%E4%B9%8B%E8%B7%B3%E8%A1%A8/</guid>
      <description>在文章 索引文件的生成（一） 中我们说到，在生成 索引文件.doc、 .pos、.pay 的过程中，当处理了 128 篇文档后会生成一个 PackedBlock，并将这个 PackedBlock 的信息写入到跳表 skipList 中，使得在读取阶段能根据文档号快速跳转到目标 PackedBlock，提高查询性能。 将 PackedBlock 的信息写入到跳表 skipList 的时机</description>
    </item>
    <item>
      <title>构造对象十</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%8D%81/</link>
      <pubDate>Tue, 15 Mar 2022 09:21:49 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%8D%81/</guid>
      <description>构造 IndexWriter 对象（九） 构造 IndexWriter 对象（八） 构造 IndexWriter 对象（七） 构造 IndexWriter 对象（六） 构造 IndexWriter 对象（五） 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（九），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 生成对象 IndexFileDeleter 我们紧接上一篇文章，继续介绍剩余的流程</description>
    </item>
    <item>
      <title>源码系列索引文件的生成十一之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%B8%80%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 09:19:00 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%B8%80%E4%B9%8B/</guid>
      <description>本文承接 索引文件的生成（十），继续介绍剩余的内容，为了便于下文的介绍，先给出 生成索引文件.dim&amp;amp;&amp;amp;.dii 的流程图以及流程点 构建BKD树的节点值（node value） 的流程图： 图 1： 图 2： 第一次更新 parentSplits 数组 图 3： parentSplits 数组的数组元素数量跟点数据的维度数量相同，下标值为</description>
    </item>
    <item>
      <title>源码系列索引文件的生成八之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%85%AB%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 09:17:33 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%85%AB%E4%B9%8B/</guid>
      <description>在前面的文章中，我们介绍了在 Lucene7.5.0 中 索引文件.dim&amp;amp;&amp;amp;.dii 的数据结构，从本篇文章开始介绍其生成索引文件。dim&amp;amp;&amp;amp;.dii 的内容，注意的是，由于是基于 Lucene8.4.0 来描述其生成过程，故如果出现跟 Lucene7.5.0 中不一致的地方会另外指出，最后建议先阅读下文章 Bkd-Tree 简单的了解下 Lucene</description>
    </item>
    <item>
      <title>深入搜索引擎原理</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B7%B1%E5%85%A5%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E5%8E%9F%E7%90%86/</link>
      <pubDate>Tue, 15 Mar 2022 09:14:08 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B7%B1%E5%85%A5%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E5%8E%9F%E7%90%86/</guid>
      <description>之前几段工作经历都与搜索有关，现在也有业务在用搜索，对搜索引擎做一个原理性的分享，包括搜索的一系列核心数据结构和算法，尽量覆盖搜索引擎的核心原理，但不涉及数据挖掘、NLP等。文章有点长，多多指点~~ 一、搜索引擎引题 搜索引擎是什么？ 这里有个概念需要提一下。信息检索 (Information Retrieval 简称 IR) 和 搜索 (Search)</description>
    </item>
    <item>
      <title>源码系列查询原理下</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9F%A5%E8%AF%A2%E5%8E%9F%E7%90%86%E4%B8%8B/</link>
      <pubDate>Tue, 15 Mar 2022 09:13:55 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9F%A5%E8%AF%A2%E5%8E%9F%E7%90%86%E4%B8%8B/</guid>
      <description>本文承接 Lucene 源码系列——查询原理（上） 。 第三小节 是否使用多线程 图 2： 在生成 IndexSearcher 对象时，用户可以提供参数 ExecutorService，调用下面的 构造函数，来实现多线程搜索： 1 2 3 public IndexSearcher(IndexReader r, ExecutorService executor) { ... ... } 当索引目录中有多个段时，把对一个段的搜索（search by segment）作为一个任务（t</description>
    </item>
    <item>
      <title>源码系列多个的的倒排求交集</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%A4%9A%E4%B8%AA%E7%9A%84%E7%9A%84%E5%80%92%E6%8E%92%E6%B1%82%E4%BA%A4%E9%9B%86/</link>
      <pubDate>Tue, 15 Mar 2022 09:07:54 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%A4%9A%E4%B8%AA%E7%9A%84%E7%9A%84%E5%80%92%E6%8E%92%E6%B1%82%E4%BA%A4%E9%9B%86/</guid>
      <description>这种 Query 组合的文档号合并的代码是在 ConjunctionDISI 类中实现。本文通过一个例子来介绍文档号合并逻辑，这篇文章中对于每个关键字如何获得包含它的文档号，不作详细描述，大家可以去看我添加了详细注释的 ConjunctionDISI 类，相信能一目了然。GitHub 地址是： https://github.com/luxugang/Luce</description>
    </item>
    <item>
      <title>构造对象四</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%9B%9B/</link>
      <pubDate>Tue, 15 Mar 2022 09:05:44 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%9B%9B/</guid>
      <description>系列文章： 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（三），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 根据不同的 OpenMode 执行对应的工作 在上一篇文章中，我们介绍了执行 CREATE 模式下的工作，故继续介绍执行 APPEND 模式下的工作。 执行 APPEND 模式下的工作的流程图 图 2：</description>
    </item>
    <item>
      <title>去哪儿网倒排索引原理</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%8E%BB%E5%93%AA%E5%84%BF%E7%BD%91%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86/</link>
      <pubDate>Tue, 15 Mar 2022 09:05:12 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%8E%BB%E5%93%AA%E5%84%BF%E7%BD%91%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86/</guid>
      <description>作者 ： 高沛， 2018年7月加入去哪儿网，目前负责酒店搜索、门票搜索、大搜等搜索相关业务，曾参与基于Lucene的搜索召回服务搭建，个人对搜索引擎、分布式技术比较感兴趣，喜欢探究技术内幕、深入了解底层原理。 1 前言 Lucene 作为 Apache 开源的一款搜索工具，一直以来是实现搜索功能的神兵利器，现今火热</description>
    </item>
    <item>
      <title>源码系列查询原理上</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9F%A5%E8%AF%A2%E5%8E%9F%E7%90%86%E4%B8%8A/</link>
      <pubDate>Tue, 15 Mar 2022 09:05:11 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9F%A5%E8%AF%A2%E5%8E%9F%E7%90%86%E4%B8%8A/</guid>
      <description>第一小节 Lucene 常见查询的使用 从本篇文章开始介绍 Lucene 查询阶段的内容，由于 Lucene 提供了几十种不同方式的查询，但其核心的查询逻辑是一致的，该系列的文章通过 Query 的其中的一个子类 BooleanQuery，同时也是作者在实际业务中最常使用的，来介绍 Lucene 的查询原理。 查询方式 下文中先介绍几种常用的查询方式的简</description>
    </item>
    <item>
      <title>构造对象六</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%85%AD/</link>
      <pubDate>Tue, 15 Mar 2022 09:05:04 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%85%AD/</guid>
      <description>系列文章： 构造 IndexWriter 对象（五） 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（五），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 生成对象 BufferedUpdatesStream 图 2： 介绍该对象会涉及很多在 文档提交之 flush 系列文章中的知识点，故如果没有看过或者不熟悉 flush 流程的</description>
    </item>
    <item>
      <title>源码系列索引文件的生成七之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B8%83%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 09:04:42 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%B8%83%E4%B9%8B/</guid>
      <description>本文承接 索引文件的生成（六） 继续介绍剩余的内容，下面先给出生成索引文件。tim、.tip 的流程图。 生成索引文件。tim、.tip 的流程图 图 1： 统计每一个 term 的信息 图 2： 执行到该流程，我们需要将当前 term 的一些信息（图 1 中的 IntBlockTermState，见文章 索引文件的生成（五））</description>
    </item>
    <item>
      <title>倒排索引原理探秘</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86%E6%8E%A2%E7%A7%98/</link>
      <pubDate>Tue, 15 Mar 2022 09:02:59 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95%E5%8E%9F%E7%90%86%E6%8E%A2%E7%A7%98/</guid>
      <description>上篇文章 http://www.6aiq.com/article/1564413040138 详细介绍了Lucene索引表的实现，内容涉及关于Terms Index以及Term Dictionary的剖析。 此文将继续剖析Lucene倒排索引实现的另一部分核心内容： 倒排表（Postings）。Lucene的官方文档关于该部分内容的描述非常丰富，所以学习起来也相对轻松。</description>
    </item>
    <item>
      <title>源码系列索引文件的生成六之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%85%AD%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 09:02:28 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%85%AD%E4%B9%8B/</guid>
      <description>本文承接 索引文件的生成（五） 继续介绍剩余的内容，下面先给出生成索引文件。tim、.tip 的流程图。 生成索引文件。tim、.tip 的流程图 图 1： 上一篇文章中，我们介绍了执行 生成一个或多个NodeBlock 的触发条件，本文就其实现过程展开介绍，同样的，下文中出现的并且没有作出解释的名</description>
    </item>
    <item>
      <title>干货查询耗时降低携程度假搜索引擎架构优化</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%B9%B2%E8%B4%A7%E6%9F%A5%E8%AF%A2%E8%80%97%E6%97%B6%E9%99%8D%E4%BD%8E%E6%90%BA%E7%A8%8B%E5%BA%A6%E5%81%87%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E6%9E%B6%E6%9E%84%E4%BC%98%E5%8C%96/</link>
      <pubDate>Tue, 15 Mar 2022 09:02:16 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E5%B9%B2%E8%B4%A7%E6%9F%A5%E8%AF%A2%E8%80%97%E6%97%B6%E9%99%8D%E4%BD%8E%E6%90%BA%E7%A8%8B%E5%BA%A6%E5%81%87%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E6%9E%B6%E6%9E%84%E4%BC%98%E5%8C%96/</guid>
      <description>作者简介 少伟，负责度假起价、搜索的研发工作，资深技术控。 锦涛，负责度假搜索及相关子系统的建设，对搜索引擎、NLP等有浓厚兴趣。 背景介绍 携程度假搜索引擎（以下简称为引擎）：携程度假搜索引擎是一个专注在旅游行业的垂直搜索引擎，用来查找符合从出发地到目的地的相关旅游产品（跟团、自由行、</description>
    </item>
    <item>
      <title>源码系列索引文件</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6/</link>
      <pubDate>Tue, 15 Mar 2022 09:01:25 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6/</guid>
      <description>当设置了TermVector的域生成了 倒排表 以后，将文档的词向量信息写到.tvx（vector_index）跟.tvd（vector_data）文件中。 数据结构 .tvd 图1： PackedIntsVersion PackedIntsVersion描述了压缩使用的方式，当前版本中是VERSION_MONOTONIC_WIT</description>
    </item>
    <item>
      <title>腾讯技术新一代搜索引擎项目设计探索</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%85%BE%E8%AE%AF%E6%8A%80%E6%9C%AF%E6%96%B0%E4%B8%80%E4%BB%A3%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E6%8E%A2%E7%B4%A2/</link>
      <pubDate>Tue, 15 Mar 2022 08:59:39 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%85%BE%E8%AE%AF%E6%8A%80%E6%9C%AF%E6%96%B0%E4%B8%80%E4%BB%A3%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E%E9%A1%B9%E7%9B%AE%E8%AE%BE%E8%AE%A1%E6%8E%A2%E7%B4%A2/</guid>
      <description>本文作者：kaelhua，腾讯 WXG 后台开发工程师 背景 写这篇文章很大的原因在于不论是内网还是外网，分享内存检索引擎设计的资料都非常稀少，且存量的资料大多侧重于功能性的介绍。 另一方面，在磁盘检索引擎方面，由于开源搜索引擎 ES 的盛行，对于其使用的索引库 lucence 的分析资料反而较为丰富。 本文意在通过</description>
    </item>
    <item>
      <title>深度解析轻量级全文索引实现原理</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%85%A8%E6%96%87%E7%B4%A2%E5%BC%95%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/</link>
      <pubDate>Tue, 15 Mar 2022 08:59:34 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%B7%B1%E5%BA%A6%E8%A7%A3%E6%9E%90%E8%BD%BB%E9%87%8F%E7%BA%A7%E5%85%A8%E6%96%87%E7%B4%A2%E5%BC%95%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86/</guid>
      <description>作者：vivo互联网服务器团队-Qian Yulun 一、Lucene简介 1.1 Lucene是什么？ Lucene是Apache基金会jakarta项目组的一个子项目； Lucene是一个开放源码的全文检索引擎工具包， 提供了完整的查询引擎和索引引擎，部分语种文本分析引擎； Lucene并不是一个完整的</description>
    </item>
    <item>
      <title>源码系列类</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B1%BB/</link>
      <pubDate>Tue, 15 Mar 2022 08:58:44 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B1%BB/</guid>
      <description>原文地址： https://www.amazingkoala.com.cn/Lucene/gongjulei/2018/1209/24.html IntBlockPool 类 在索引阶段，使用 IntBlockPool 来存储 term(域值)的信息，在 MemoryIndex 中，使用此类对 term 在文档中的位置、payload 数据进行存储，它即 MemoryIndex 中的倒排表，它的数据就是用这个类的对象存储的。在介绍 IntBlockPool 类时，我们根据这个类在 MemoryIndex 中实际使用过程来讲解。 如何介绍 IntBlockPool 类 首先会贴出这个类中几个重要的方法，</description>
    </item>
    <item>
      <title>源码系列索引文件的生成四之跳表</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%9B%9B%E4%B9%8B%E8%B7%B3%E8%A1%A8/</link>
      <pubDate>Tue, 15 Mar 2022 08:58:43 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%9B%9B%E4%B9%8B%E8%B7%B3%E8%A1%A8/</guid>
      <description>在文章 索引文件的生成（三） 中我们介绍了在 Lucene 中生成跳表 SkipList 的流程，通过流程图的方法介绍了源码中的实现方式，而对于读取 SkipList 的内容，决定直接以例子的方式来介绍其读取过程，下文中出现的名词如果没有作出介绍，请先阅读文章 索引文件的生成（三）。 例子 直接给出一个生成后的跳表： 图 1： 在图 1 中，为了便</description>
    </item>
    <item>
      <title>构造对象九</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B9%9D/</link>
      <pubDate>Tue, 15 Mar 2022 08:56:05 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B9%9D/</guid>
      <description>构造 IndexWriter 对象（八） 构造 IndexWriter 对象（七） 构造 IndexWriter 对象（六） 构造 IndexWriter 对象（五） 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（八），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 生成对象 IndexFileDeleter 我们紧接上一篇文章，继续介绍剩余的流程点，下面先给出 IndexFileDeleter</description>
    </item>
    <item>
      <title>源码系列索引文件的生成五之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%BA%94%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 08:56:05 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E4%BA%94%E4%B9%8B/</guid>
      <description>在前面的四篇文章中，我们介绍了生成索引文件 .tim、.tip、 .doc、 .pos、.pay 中.doc、.pos、.pay 这三个索引文件的内容，接着我们继续图 1 中剩余的内容，即流程点 生成索引文件.tim、.tip。 生成索引文件。tim、.tip、.doc、.pos、.pay 的流程图</description>
    </item>
    <item>
      <title>源码系列索引文件的生成十之</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%B9%8B/</link>
      <pubDate>Tue, 15 Mar 2022 08:56:05 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E7%B4%A2%E5%BC%95%E6%96%87%E4%BB%B6%E7%9A%84%E7%94%9F%E6%88%90%E5%8D%81%E4%B9%8B/</guid>
      <description>本文承接 索引文件的生成（九），继续介绍剩余的内容，下面先给出生成索引文件。dim&amp;amp;&amp;amp;.dii 的流程图： 图 1： 在上一篇文章中，我们介绍了流程点 执行处理前的初始化的工作，在这个流程中涉及到的一些信息贯穿整个流程，请务必先行阅读， 例如一些变量名如果没有展开说明，说明已经</description>
    </item>
    <item>
      <title>构造对象五</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%BA%94/</link>
      <pubDate>Tue, 15 Mar 2022 08:56:03 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%BA%94/</guid>
      <description>系列文章： 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（四），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 根据不同的 OpenMode 执行对应的工作 在上一篇文章中，我们介绍了执行 APPEND 模式下的工作的部分流程点，故继续对剩余的流程进行介绍。 执行 APPEND</description>
    </item>
    <item>
      <title>语法中执行顺序探秘</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%AF%AD%E6%B3%95%E4%B8%AD%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F%E6%8E%A2%E7%A7%98/</link>
      <pubDate>Tue, 15 Mar 2022 08:54:03 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E8%AF%AD%E6%B3%95%E4%B8%AD%E6%89%A7%E8%A1%8C%E9%A1%BA%E5%BA%8F%E6%8E%A2%E7%A7%98/</guid>
      <description>作者： 梁尔舒，李昀晖 写在前面 我们之前应该都了解链表求交、求并的算法，但是很少在实际工作中见过这些算法是怎么体现的，解决了哪些场景下的问题，其实lucene解决链表求交并的算法非常漂亮。最近因为工作中需要排查线上总是出现某些检索DSL执行比较慢，在网上到处找底层具体执行的资料，发现</description>
    </item>
    <item>
      <title>源码分析</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</link>
      <pubDate>Mon, 14 Mar 2022 17:51:04 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</guid>
      <description>原文链接： https://www.amazingkoala.com.cn/Lucene/yasuocunchu/2019/0220/35.html FST（Finite State Transducer）算法的概念在这篇博客中并不涉及，网上有太多的资料啦，写的都非常的不错。这里推荐这位网友的介绍： https://www.shenyanchao.cn/blog/2018/12/04/lucene-fst/ 。如果链接失效了，可以看附件中的副本。本文中，我们基于一个例子来介绍在 Lucene 中如何实现 FST 算法及应用，感谢网友 关新全 的分享，基于他的分</description>
    </item>
    <item>
      <title>源码系列默认策略</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E9%BB%98%E8%AE%A4%E7%AD%96%E7%95%A5/</link>
      <pubDate>Mon, 14 Mar 2022 17:45:33 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E9%BB%98%E8%AE%A4%E7%AD%96%E7%95%A5/</guid>
      <description>这篇文章介绍 TieredMergePolicy，它是 Lucene4 以后的默认段的合并策略，之前采用的合并策略为 LogMergePolicy，建议先熟悉 LogMergePolicy 后再了解 TieredMergePolicy，这样对于两种合并策略的优缺点能一目了然，使得在不同业务使用对应的策略，其中两种合并策略最大的不同</description>
    </item>
    <item>
      <title>源码系列收集各个命中的</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%94%B6%E9%9B%86%E5%90%84%E4%B8%AA%E5%91%BD%E4%B8%AD%E7%9A%84/</link>
      <pubDate>Mon, 14 Mar 2022 17:45:16 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%94%B6%E9%9B%86%E5%90%84%E4%B8%AA%E5%91%BD%E4%B8%AD%E7%9A%84/</guid>
      <description>在搜索阶段，每当 Lucene 找到一个满足查询条件的文档（Document），便会将该文档的文档号（docId）交给 Collector，并在 Collector 中对收集的文档号集合进行排序（sorting）、过滤（filtering）或者用户自定义的操作。 本篇文章将根据图 1 中的类图（Class diagram）</description>
    </item>
    <item>
      <title>构造对象八</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%85%AB/</link>
      <pubDate>Mon, 14 Mar 2022 17:44:23 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E5%85%AB/</guid>
      <description>构造 IndexWriter 对象（七） 构造 IndexWriter 对象（六） 构造 IndexWriter 对象（五） 构造 IndexWriter 对象（四） 构造 IndexWriter 对象（三） 构造 IndexWriter 对象（二） 构造 IndexWriter 对象（一） 本文承接 构造 IndexWriter 对象（七），继续介绍调用 IndexWriter 的构造函数的流程。 调用 IndexWriter 的构造函数的流程图 图 1： 生成对象 IndexFileDeleter 我们紧接上一篇文章，继续介绍剩余的流程点，下面先给出 IndexFileDeleter 的构造函数流程图</description>
    </item>
    <item>
      <title>源码系列有穷自动机</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9C%89%E7%A9%B7%E8%87%AA%E5%8A%A8%E6%9C%BA/</link>
      <pubDate>Mon, 14 Mar 2022 17:44:03 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E6%9C%89%E7%A9%B7%E8%87%AA%E5%8A%A8%E6%9C%BA/</guid>
      <description>Automaton 在介绍 Automation 类之前先介绍下有穷自动机的概念，有穷自动机分为确定型有穷自动机(DFA)跟不确定型有穷自动机(NFA)。由于本篇文章是为介绍 TermRangeQuery 作准备的，所以只介绍确定性有穷自动机。 确定型有穷自动机(Deterministic Finite Automaton) 这种自动机在读任何输入序列后只能处在一个状态中，术语“确定</description>
    </item>
    <item>
      <title>源码系列工具类</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%B7%A5%E5%85%B7%E7%B1%BB/</link>
      <pubDate>Mon, 14 Mar 2022 17:44:00 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97%E5%B7%A5%E5%85%B7%E7%B1%BB/</guid>
      <description>FixedBitSet FixBitSet 类在 Lucene 中属于一个工具类（Util），它的其中一个用途用来存储文档号，用一个 bit 位来描述（存储）一个文档号。该类特别适合存储连续并且没有重复的 int 类型的数值。最好情况可以用 8 个字节来描述 64 个 int 类型的值。下面通过介绍几个 FixBitSet 类的方法来理解这个类的存储原理。本篇文章纯属充数。。。直接看源</description>
    </item>
    <item>
      <title>源码系列</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97/</link>
      <pubDate>Mon, 14 Mar 2022 17:25:55 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%BA%90%E7%A0%81%E7%B3%BB%E5%88%97/</guid>
      <description>原文： https://www.amazingkoala.com.cn/Lucene/2019/1205/115.html 阅读本篇文章需要前置内容： BulkOperationPacked，下文中会列出在文章 BulkOperationPacked 中涉及的代码，但是不会展开介绍。 DirectWriter&amp;amp;&amp;amp;DirectReader 两个类用来处理 long 类型的数据集（数组类型），其中 DirectWriter 用来在写数据时使用 BulkOperationPacked 将 long 类型的数据转换成 byte 类型，而 DirectReader 则是将 byte 类型的数据恢复成 long 类型。使用 byte 类型数据存储的</description>
    </item>
    <item>
      <title>构造对象一</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%80/</link>
      <pubDate>Mon, 14 Mar 2022 17:25:16 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%B8%80/</guid>
      <description>来源： https://www.amazingkoala.com.cn/Lucene/Index/2019/1111/106.html 该系列文章将会介绍构造一个 IndexWriter 对象的流程，该流程总体分为下面三个部分： 设置索引目录 Directory 设置 IndexWriter 的配置信息 IndexWriterConfig 调用 IndexWriter 的构造函数 设置索引目录 Directory Directory 用来维护索引目录中的索引文件，定义了 创建、 打开、 删除、 读取、 重命名、 同步(持久化索引文件至磁盘)、 校验和（checksum computing</description>
    </item>
    <item>
      <title>构造对象二</title>
      <link>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%BA%8C/</link>
      <pubDate>Mon, 14 Mar 2022 16:48:09 +0800</pubDate>
      <guid>https://index.zshipu.com/geek/post/%E4%BA%92%E8%81%94%E7%BD%91/%E6%9E%84%E9%80%A0%E5%AF%B9%E8%B1%A1%E4%BA%8C/</guid>
      <description>查看来源 系列文章: 构造 IndexWriter 对象（一） 构造一个 IndexWriter 对象的流程总体分为下面三个部分： 设置索引目录 Directory 设置 IndexWriter 的配置信息 IndexWriterConfig 调用 IndexWriter 的构造函数 在文章 构造 IndexWriter 对象（一） 中我们讲到了设置 IndexWriter 的配置信息 IndexWriterConfig 中不可配置的内容，接着我们继续介绍可配置的内容。 设置 IndexWriter 的配置信息 IndexWriterConfig 可变配置 可变配置包含的内容有：Merg</description>
    </item>
  </channel>
</rss>
