Marklogic 如何排除XDMP-RANGEINDEX错误?

Marklogic 如何排除XDMP-RANGEINDEX错误?,marklogic,marklogic-9,Marklogic,Marklogic 9,我们正在一个大约400 GB的数据库上运行reindex,我们看到以下调试日志条目:- 2021-01-24 16:13:55.705 Debug: IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: double "": XDMP-LEXVAL: Invalid lexical value "" 2021-01-24 16:13:55.715 Debug: IndexerEnv::

我们正在一个大约400 GB的数据库上运行reindex,我们看到以下调试日志条目:-

2021-01-24 16:13:55.705 Debug: IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: double "": XDMP-LEXVAL: Invalid lexical value ""
2021-01-24 16:13:55.715 Debug: IndexerEnv::putRangeIndex: XDMP-RANGEINDEX: Range index error: double "": XDMP-LEXVAL: Invalid lexical value ""

看起来某个索引没有设置正确的标量类型,或者文档中的元素有无效值?我们如何解决这个问题?有什么建议吗

您正在运行什么版本的MarkLogic?使用MarkLogic 10.0-5进行的快速测试在错误消息中显示uri:

2021-01-25 09:36:01.636调试:IndexerEnv::putRangeIndex:XDMP-RANGEINDEX:范围索引错误:int fn:doc(“/test/doc1.xml”)/root/foo:XDMP-LEXVAL:无效的词法值“bar”

如果不这样做,您将需要检查现有的
double
类型的范围索引,并尝试XPath是否可以显示哪些文档比较麻烦。比如:

subsequence(collection()[//path/to/double = ''], 1, 10) ! xdmp:node-uri(.)
不要一路抓住它们,但抓住前10个应该是可行的。也许能让你知道该去哪里找


奇怪的是,消息中没有包含具有无效值的元素的doc和XPath。另一种尝试显示文档的方法是将invalid values选项从ignore更改为reject,然后它将无法重新索引/保存该文档,并应为您提供关于哪些文档包含这些空元素的线索。ML version=9.0-11。我们有3个标量类型为“double”的范围索引。数据库中的文档总数为103900226。您可以对范围索引值大于0和小于0的文档执行未筛选查询。具有有效值的文档将被排除(假设每个文档有一个值),但具有无效值的文档将保留以进行筛选。我想。