首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >元素范围索引和搜索可用性

元素范围索引和搜索可用性
EN

Stack Overflow用户
提问于 2020-06-26 22:39:27
回答 1查看 120关注 0票数 1

MarkLogic 9.0.8.2

我们的数据库中大约有2000万条XML格式的记录。

为了使用facet,我们在给定的元素上创建了element -rage index。

它工作得很好,所以没有问题。

真正的问题是,我们现在希望在不同的环境中部署相同的代码,比如System Test(ST)、UAT、Production。

在部署代码之前,我们必须确保给定的索引存在。所以我们提前1/2天执行它。

我们注意到,在完全索引完成之前,我们不能部署我们的代码,否则它将开始显示像这样的错误。

代码语言:javascript
复制
    <error:code>XDMP-ELEMRIDXNOTFOUND</error:code>
    <error:name/>
    <error:xquery-version>1.0-ml</error:xquery-version>
    <error:message>No element range index</error:message>
    <error:format-string>XDMP-ELEMRIDXNOTFOUND: cts:element-reference(fn:QName("","tc"), ("type=string", "collation=http://marklogic.com/collation/")) -- No string element range index for tc collation=http://marklogic.com/collation/ </error:format-string>

一旦索引完成,相同的代码将按预期运行。

特别是在ST/UAT中,如果我们得到未完成索引的部分数据,我们就很好。

我们有什么方法可以做到这一点吗?否则我们会浪费太多的时间来等待索引的完成。

每当我们提出依赖于新索引的新特性时,就会发生这种情况

EN

回答 1

Stack Overflow用户

发布于 2020-06-27 00:21:34

仅当范围索引存在且可用时,才能使用它。只有在所有匹配的记录都已建立索引后,它才可用。

您应该更早地创建索引,并在部署使用它们的代码之前留出足够的时间来完成重新索引。也许让你的代码部署依赖于重建索引状态,并且在它完成之前不允许它被部署。

如果您的应用程序的新版本可以在没有索引的情况下工作(值查询而不是范围查询),或者您可以使用返回不准确结果的查询,那么您可以启用/禁用使用这些功能标志的代码部分,或者使用try/catch包装,但是您确实应该在部署周期的早期创建索引。

否则,如果您在没有一个完整且正常运行的环境的情况下执行测试,那么您真正测试的是什么?

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62597133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档