Pas*_*imo 52
Lucene索引被拆分为称为段的较小块.每个细分都是自己的索引.Lucene按顺序搜索所有这些.
打开新编写器以及编写器提交或关闭时,将创建新段.
使用此系统的优点是,一旦创建了段,您就不必修改它们的文件.在索引中添加新文档时,它们将添加到下一个段中.以前的段永远不会被修改.
通过简单地在文件中指示删除段的哪个文档来完成删除文档,但在物理上,文档始终保留在段中.Lucene中的文档并未真正更新.发生的情况是,文档的先前版本在其原始段中被标记为已删除,并且文档的新版本被添加到当前段.这通过在有变化时不断修改其内容来最小化破坏索引的可能性.它还允许在不同的机器上轻松备份和同步索引.
但是,在某些时候,Lucene可能决定合并一些细分市场.也可以通过优化来触发此操作.
其他人已经回答了细分市场的好处。我将包括一个 Lucene 索引的 ascii 图。
Lucene 段是索引的一部分。每个段由几个索引文件组成。如果您查看这些文件中的任何一个,您将看到它包含 1 个或多个Lucene 文档。
+- Index 5 ------------------------------------------+
| |
| +- Segment _0 ---------------------------------+ |
| | | |
| | +- file 1 -------------------------------+ | |
| | | | | |
| | | +- L.Doc1-+ +- L.Doc2-+ +- L.Doc3-+ | | |
| | | | | | | | | | | |
| | | | field 1 | | field 1 | | field 1 | | | |
| | | | field 2 | | field 2 | | field 2 | | | |
| | | | field 3 | | field 3 | | field 3 | | | |
| | | | | | | | | | | |
| | | +---------+ +---------+ +---------+ | | |
| | | | | |
| | +----------------------------------------+ | |
| | | |
| | | |
| | +- file 2 -------------------------------+ | |
| | | | | |
| | | +- L.Doc4-+ +- L.Doc5-+ +- L.Doc6-+ | | |
| | | | | | | | | | | |
| | | | field 1 | | field 1 | | field 1 | | | |
| | | | field 2 | | field 2 | | field 2 | | | |
| | | | field 3 | | field 3 | | field 3 | | | |
| | | | | | | | | | | |
| | | +---------+ +---------+ +---------+ | | |
| | | | | |
| | +----------------------------------------+ | |
| | | |
| +----------------------------------------------+ |
| |
| +- Segment _1 (optional) ----------------------+ |
| | | |
| +----------------------------------------------+ |
+----------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
Lucene in Action 第二版 - 2010 年 7 月 - Manning Publication
| 归档时间: |
|
| 查看次数: |
11818 次 |
| 最近记录: |