在节点类型定义上设置indexNodeName=true
和使用属性name=:nodeName
定义虚拟nodeName属性之间有什么区别(如果有)。 indexNodeName定义如下:
默认为false。如果设置为true,则还将为其创建索引 节点名称。这样可以更快地评估涉及的查询 节点名称的约束
索引节点名作为属性目标类似于indexNodeName
,但这并不意味着"与"相同。 docs对此并没有多说:
字符串:nodeName - 此特殊情况将节点名称索引,就像它一样 被索引的节点的虚拟属性。将此设置为 nodeScopeIndex = true类似于在索引时设置indexNodeName = true 规则。
因此,需要设置两个或仅一个设置才能查询节点名称。如果只是其中之一,哪一个和有什么区别? 例子:
//element(*, app:Asset)[fn:name() = ‘kite’]
//*[jcr:like(fn:name(), ‘kite%’)]
//element(kite, app:Asset)
//element(*, dam:Asset)[(jcr:like(fn:lower-case(fn:name()), 'kite%')
答案 0 :(得分:1)
indexNodeName=true
是使用name=:nodeName
和nodeScopeIndex=true
定义属性的快捷方式。
name=:nodeName
允许更灵活(以一点复杂性为代价)为其他用法索引节点名称 - 建议,拼写检查等。
因此,如果您只想使用其中一种方法查询节点名称应该运行良好(尽管,imo,indexNodeName=true
更简单,更清晰)。
Otoh,如果您还希望节点名称显示为建议/拼写检查结果,那么您必须求助于name=:nodeName
AND nodeScopeIndex=true
AND useInSuggest=true
的属性定义。< / p>