第二章 构建索引
2.1 Lucene如何对搜索内容进行建模
2.1.1 文档和域
2.1.2 灵活的架构
往文档添加域,跟重建索引二者是什么关系?
Lucene和数据库之间的第二个主要的区别是,Lucene要求你在进行索引操作时简单化或反向规格化原始数据。
2.1.3 反向规格化(Denormalization)
2.2 理解索引过程
2.2.1 提取文本和创建文档
结合Tika框架从各种格式的文件中提取文本信息
2.2.2 分析文档
2.2.3 向索引添加文档
倒排索引
索引段
索引段的格式细节是什么样的
2.3 基本索引操作
2.3.1 向索引添加文档
2.3.2 删除索引中的文档
如果需要通过Term类删除单个文档,需要确认在每个文档中都已索引过对应的Field类,还需要确认所有域值都是唯一的,这样才能将这个文档单独找出来删除。
必须是已经索引过的,才能找出来。上面的意思是说这个文档的所有域值都是唯一的,这样才能单独找出来,没有重复的;其实还有一种办法,可以对这个域进行任意命名(通常用ID命名),该域需要被索引成未被分析的域以保证分析器不会将它分解成语汇单元。然后利用该域来删除对应文档。
索引成分析的域和未被分析的域有什么区别?
2.3.3 更新索引中的文档
如果你的文档是从Web服务器中抓取的,一个检测文档内容是否改变的方法是找到改变后的ETag HTTP文件头。如果该头与你上次索引文档的对应头不一致,则说明文档内容已发生变化,并且你需要在索引中更新该文档。
删除旧文档,添加新文档,这个看不懂源代码
2.4 域选项
2.4.1 域索引选项
什么是倒排索引?
Index.ANALYZED
Index.NOT_ANALYZED
Index.ANALYZED_NO_NORMS
Index.NOT_ANALYZED_NO_NORMS
Index.NO
2.4.2 域存储选项
Store.YES
Store.NO
2.4.3 域的项向量选项
不理解
2.4.4 Reader、TokenStream、byte[]域值
不理解
2.4.5 域选项组合
2.4.6 域排序选项
用于排序的域必须是进行索引的,而且每个对应文档必须包含一个语汇单元等等。
2.4.7 多值域
2.5 对文档和域进行加权操作
2.5.1 文档加权操作
2.5.2 域加权操作
2.5.3 加权基准(Norms)
2.6 索引数字、日期和时间
2.6.1 索引数字
2.6.2 索引日期和时间
2.7 域截取(Field truncation)
未完待续。。。。。。