我试图使用Jackrabbit属性索引,但当我有数千个节点时,似乎总是选择横向模式进行查询执行。
例如,单个节点/mystore
下有1万个类型为test:mytype
的节点。在这些节点中,我有一个属性test:myprop
,它有3个不同的可能值(每个值接近3000个节点)。
当我运行以下查询
select [jcr:uuid] from [test:mytype] where [test:myprop]='MyValue'
则查询引擎处理器总是使用横向模式,而不使用我为test:myprop
创建的索引。
我试图直接调试代码,我清楚地看到查询引擎试图使用我已经定义的属性索引,但不使用它,因为横向游标索引的成本似乎总是"100",我的属性索引包含近"3000"节点为每个可能的值。查询引擎认为使用横向游标会更有效率,即使引擎需要横向10000个节点。
有人遇到过类似的问题吗?
对
假设您正在使用Oak 1.3。X时,您必须在创建存储库时初始化索引。请参考我对这个问题的回答。
发布后,您将不得不手动创建索引,以便Oak对它们进行索引并在查询中使用。