gpt4 book ai didi

indexing - 了解 Marklogic 中的范围索引

转载 作者:行者123 更新时间:2023-12-01 09:27:55 25 4
gpt4 key购买 nike

我在 ML 文档中发现了以下内容: 范围索引让服务器将值映射到片段,并将片段映射到值……前者用于支持“范围谓词”……后者用于支持快速排序操作。谁能向我解释一下。描述如何维护此映射的某种图表将非常有帮助。

最佳答案

是的,请阅读 Jason 的优秀论文,了解 MarkLogic 内部工作的所有细节。

范围索引的简单总结是这样的:范围索引是一个排序的术语列表。术语列表是存储在文档中的值的倒排索引。例如,对于单词索引,创建一个术语列表(术语列表),其中包含所有文档中的所有单词。列表中的每个术语都是一个单词,比如“humdinger”,以及该单词出现的一组相关片段 ID。当您对“humdinger”进行单词搜索时,ML 会检查术语列表以找出该单词出现在哪些片段中。很容易。更复杂的搜索只是所有适用术语列表中所有匹配术语的集合交集。

大多数“常规”索引都没有排序,它们被组织为散列,以提高匹配项的效率。它们产生一组结果,但没有排序(之后应用相关性排序)。另一方面,范围索引是按其术语值排序的术语列表。因此,范围索引表示出现在数据库中元素或属性的所有实例中的唯一值的范围。

因为范围索引术语列表是有序的,当您在搜索中获得匹配项时,您不仅知道它们出现在哪些片段中,还知道该字段可能值的排序顺序。 MarkLogic 的 XQuery 进行了优化,可以识别您何时提供了引用范围索引的元素或属性的“order by”子句。这让它不是通过比较匹配的文档进行排序,而是通过向下迭代排序的术语列表并按该顺序获取匹配的文档。这使得它更快,因为文档本身不需要被触摸来确定它们的排序顺序。

但是等等,还有更多。如果您对搜索结果进行分页,只获取匹配结果的一部分,那么按范围索引字段进行快速排序也可以帮助您。如果在应用页面窗口选择谓词之前注意不要访问文档的任何其他部分(范围索引元素除外),则永远不需要获取该窗口之外的文档。预排序选择和快速向前跳过的组合确实是您可以有效地逐步遍历大型排序结果集的唯一方法。

范围索引还有一项有用的功能。您可以将它们的值作为词典访问,枚举整个数据库中给定元素或属性中出现的唯一值,但无需每个人实际查看任何文档。这对于自动建议和获取构面计数等事情非常有用。

我希望澄清什么是范围索引。

关于indexing - 了解 Marklogic 中的范围索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19902121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com