【发布时间】:2014-06-17 18:06:51
【问题描述】:
所以我对信息检索有一定的了解。但我不清楚 solr 为索引做了什么。我知道 solr 正在使用 lucene 进行索引。那么 solr 是对每个文档进行反向索引还是只是使用每个文档的 id 进行索引? 任何解释都可能会有所帮助,或者请给我一些文章。
【问题讨论】:
标签: solr lucene information-retrieval
所以我对信息检索有一定的了解。但我不清楚 solr 为索引做了什么。我知道 solr 正在使用 lucene 进行索引。那么 solr 是对每个文档进行反向索引还是只是使用每个文档的 id 进行索引? 任何解释都可能会有所帮助,或者请给我一些文章。
【问题讨论】:
标签: solr lucene information-retrieval
据我所知,solr 使用 ID 字段,因为每个索引都有一个唯一字段是一种很好的做法。 Lucene 不关心这些琐碎的事情。
就倒排索引而言,过程是这样的:文档中的每个字段都使用其指定的分析器进行分析。之后,令牌列表以 field_name:token_value 形式放置在倒排索引中,并更新指针以包含新的文档 id(这里 id 是 lucene 内部的东西,与 solr id 字段无关,你可以阅读有关它的更多信息,为什么要学习细分)。所有 field_name:token_value 对都按顺序存储(稍后会详细介绍)
>还存储了指向词频和其他相关内容的位置的指针。由于 lucene 采用只读策略,每次提交都会创建一个新索引(称为段)。假设您定期提交,这也使得存储术语字典排序变得容易。
在删除时,对于每个段都有一个特殊的删除文件(位集),它基本上会从任何匹配的查询中过滤掉已删除的文档。在合并时,根据合并策略,段及其删除文件可能会消失,被合并到一个新段中。
要真正了解这些术语在文件中的外观并更好地理解 lucene 的文件格式,请阅读这篇关于人类可读文本编解码器的帖子:http://blog.mikemccandless.com/2010/10/lucenes-simpletext-codec.html,以及此页面以了解有关 Lucene 文件格式的更多信息:@987654322 @
希望对你有帮助
【讨论】:
Solr 的索引是逐个字段控制的。对于要索引的特定字段(例如,为字段创建倒排索引),选项“indexed”应设置为“true”。它的索引方式(作为文本字段、未分析的字符串、日期、数字等)是字段类型的函数。
我已经包含了一些应该有用的链接:
【讨论】: