我正在尝试在JCR SQL2中进行全文搜索.查询应返回所有至少包含一个包含搜索字符串的属性的节点,或者它们具有包含相同字符串属性的子节点.这是我到目前为止所拥有的:
select * from [nt:base] as t where ocm_classname = 'info.magnolia.cv.CurriculumVitae' and contains(t.*, 'java')
Run Code Online (Sandbox Code Playgroud)
这解决了第一部分,选择具有指定的所有节点ocm_classname和至少一个包含单词'java'的属性.但我无法弄清楚如何搜索没有包含单词'java'的属性但具有包含该单词属性的子节点的节点.例如,应找到此节点:
<sv:node sv:name="cv1362044004066">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>nt:unstructured</sv:value>
</sv:property>
<sv:property sv:name="address" sv:type="String">
<sv:value>Chicago, IL</sv:value>
</sv:property>
<sv:property sv:name="currentDepartment" sv:type="String">
<sv:value>dotNet</sv:value>
</sv:property>
<sv:property sv:name="currentRole" sv:type="String">
<sv:value>Project Manager</sv:value>
</sv:property>
<sv:property sv:name="dateOfBirth" sv:type="Date">
<sv:value>1981-01-14T00:05:00.000-05:00</sv:value>
</sv:property>
<sv:property sv:name="id" sv:type="String">
<sv:value>1362044004066</sv:value>
</sv:property>
<sv:property sv:name="name" sv:type="String">
<sv:value>John Carpenter</sv:value>
</sv:property>
<sv:property sv:name="ocm_classname" sv:type="String">
<sv:value>info.magnolia.cv.CurriculumVitae</sv:value>
</sv:property>
<sv:node sv:name="skills">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>nt:unstructured</sv:value>
</sv:property>
<sv:node sv:name="collection-element">
<sv:property sv:name="jcr:primaryType" sv:type="Name">
<sv:value>nt:unstructured</sv:value>
</sv:property>
<sv:property sv:name="level" sv:type="String"> …Run Code Online (Sandbox Code Playgroud)