在SQL中,索引通常是一种平衡树(有序节点,指向真实的表行以便在O(log n)时间内进行搜索)。遍历这样的树实际上就是搜索过程。
现在,Lucene使用倒排索引和词项频率:它为每个词项存储它在哪些文档中出现了多少次。这很容易理解。但这并没有解释如何实际执行对这样一个索引的搜索。
当然,搜索字符串也会被分析并分成相同的词项,然后“搜索索引”以查找包含它们的文档——但是如何呢?Lucene索引本身是否也按某种方式有序且类似于树形组织,以使O(log n)成为可能?还是说在搜索时遍历Lucene索引实际上是线性的,因此是O(n)?
现在,Lucene使用倒排索引和词项频率:它为每个词项存储它在哪些文档中出现了多少次。这很容易理解。但这并没有解释如何实际执行对这样一个索引的搜索。
当然,搜索字符串也会被分析并分成相同的词项,然后“搜索索引”以查找包含它们的文档——但是如何呢?Lucene索引本身是否也按某种方式有序且类似于树形组织,以使O(log n)成为可能?还是说在搜索时遍历Lucene索引实际上是线性的,因此是O(n)?