22

我不明白何时使用 omitNorms="true"。我阅读了 2-3 个链接,但我仍然不清楚它的含义。这是什么意思“设置为 true 以省略与该字段相关的规范(这会禁用字段的长度规范化和索引时间提升,并节省一些内存)。只有全文字段或需要索引时间提升的字段需要规范。” 在http://wiki.apache.org/solr/SchemaXml页面

4

1 回答 1

31

规范以单字节信息的形式存储在每个文档每个字段的索引中。这将保存应用于字段或长度信息的索引时间提升的信息。
长度信息将允许您增加较短的字段而不是较长的字段。
此外,索引时间提升将允许一个字段比其他字段提升得更高。

由于它占用空间,如果不需要,应将其关闭。
如果没有使用索引时间提升,或者字段是短文本字段或不需要任何长度规范化的非文本字段。

你可以在这里找到一些详细的解释。

当规范被加载到 IndexReader 中时,它们会被加载到每个字段的 byte[maxdoc] 数组中——因此即使 4 亿文档中有一个字段,它仍然会为该字段加载 byte[maxdoc],可能会使用大量 RAM。


作为我们正在讨论多少 RAM 的示例,1000 万个文档索引中的一个字段将占用不到 10 MB 的 RAM。一百个这样的字段将占用近 1 GB 的 RAM。

于 2013-09-09T09:59:29.310 回答