Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
X-Hive XQuery优化_Xquery - Fatal编程技术网

X-Hive XQuery优化

X-Hive XQuery优化,xquery,Xquery,我的xquery将搜索40000多个文件,并检查是否存在特定请求 示例: 声明选项xhive:忽略索引“资源类型索引”; { 对于文档中的$doc('/repository/content')[以(xhive:metadata(,'docato uri'),'/cards')和xhive:metadata(,'docato type')='XML\u RESOURCE\u type'和(exists(xhive:metadata(,'change-request'))开头] 返回 对于xhive

我的xquery将搜索40000多个文件,并检查是否存在特定请求

示例:

声明选项xhive:忽略索引“资源类型索引”;
{
对于文档中的$doc('/repository/content')[以(xhive:metadata(,'docato uri'),'/cards')和xhive:metadata(,'docato type')='XML\u RESOURCE\u type'和(exists(xhive:metadata(,'change-request'))开头]
返回
对于xhive中的$innerVersionId:version ID($doc)
let$innerCurrVersion:=xhive:version($doc,$innerVersionId)
让$verid:=xhive:metadata($innerCurrVersion,'docato version id')
let$req:=xhive:metadata($innerCurrVersion,'change-request')
返回
如果(包含(xs:string($req),'1023548'),则
else()
}

由于这种方法需要更长的时间,我如何优化它呢?

我可以确认,X-Hive,现在的xDB,仍然非常活跃,因为我是它的开发人员;)

至于你的问题,不幸的是你无能为力。您正在使用的xDB版本只支持高效地查询文档的最新版本,因为您正在尝试搜索所有版本。引擎别无选择,只能恢复到彻底搜索

在xDB 10.4中,我们引入了一种新的版本控制数据格式,允许您高效地查询(和索引)文档的所有版本,并在日期范围内搜索,等等。不幸的是,这需要数据迁移,因此目前对您没有多大用处

在您使用的xDB版本中,您唯一能做的就是限制您正在搜索的“卡片”的数量(现在您似乎在搜索所有卡片),或者以某种方式将所有更改请求公开到文档的最新版本,这样您就可以使用传统索引来极大地限制必须逐版本扫描的文档数量。实现这一点的一种方法是在元数据字段“change requests”中包含某种空格分隔列表:“1023548 1239123 3924923等”,然后可以使用全文元数据索引(xhive:fts(xhive:metadata(“'change requests'),'1023548'))获取具有匹配项的初始文档集,然后仅对这些文档执行查询


一点也不优雅,但这是我目前所能想到的最好的。

X-Hive是EMC很久以前收购的。如果您想要性能,您可能不想使用过时的、未经移植的产品,因为开发已经停止。实际上,X-Hive作为XDB在EMC的Documentum产品套件中仍然存在。也许用户可以使用更新的版本?谢谢@adamretter,我应该澄清一下。我知道,但由于改名,我怀疑这里使用的是一个相当过时的版本。但这只是猜测,所以我认为如果OP澄清使用的是哪个版本会更好。谢谢你的建议。