1

我当前的问题是在属性值中找到 HTML-Tags。我认为用这样的查询很容易搜索/jcr:root/content/xgermany//*[jcr:contains(., '<strong>')] order by @jcr:score

看起来字符有问题,<因为>此查询找到strong了其属性中的所有内容。<strong>Some Text</strong>它还发现了This is a strong man.

Query Builder API也没有帮助我。

是否有可能使用 XPath 或 SQL 查询来解决它,还是我必须遍历整个内容?

4

4 回答 4

0

我不完全理解为什么它会This is a strong man作为 的结果找到'<strong>',但听起来意外的行为来自jcr:contains() 的第二个参数的“简单搜索引擎语法”。显然,< >只是被忽略为“毫无意义”的标点符号。

您可以尝试引用搜索词:

/jcr:root/content/xgermany//*[jcr:contains(., '"<strong>"')]

尽管如果您的整个 XPath 表达式用双引号括起来,您可能需要进行调整。

当然,即使它有效,它也不会很健壮,因为您试图通过搜索固定字符串来查找 HTML 元素,而不是实际解析 HTML。

于 2015-06-05T15:41:37.757 回答
0

如果你有一个特定的 jcr:primaryType 和目标属性,你可以做这样的事情

 select * from nt:unstructured where text like '%<strong>%'

我测试了它,但你需要知道你感兴趣的属性。

这是 jcr-sql 语法

于 2015-06-06T21:19:32.087 回答
0

以这种方式开始使用像冠军这样的谓词,所有这些对你来说都是有意义的!

HTML Encode &lt;strong&gt;
HTML Decimal &#60;strong&#62;

查询构建器是您的朋友:谓词:(就像一个冠军!)

path=/content/geometrixx
type=nt:unstructured
property=text
property.operation=like
property.value=%&#60;strong&#62;%

去过这里: http://localhost:4502/libs/cq/search/content/querydebug.html?字符集=UTF-8&query=path%3D%2Fcontent%2Fgeometrixx%0D%0Atype%3Dnt%3Aunstructured%0D%0Aproperty%3Dtext%0D%0Aproperty.operation%3Dlike%0D%0Aproperty.value%3D%25%3Cstrong%3E% 25

谓词:(就像一个冠军!)

path=/content/geometrixx
type=nt:unstructured
property=text
property.operation=like
property.value=%&lt;strong&gt;%

来这里看看:

http://localhost:4502/libs/cq/search/content/querydebug.html? 字符集=UTF-8&query=path%3D%2Fcontent%2Fgeometrixx%0D%0Atype%3Dnt%3Aunstructured%0D%0Aproperty%3Dtext%0D%0Aproperty.operation%3Dlike%0D%0Aproperty.value%3D%25%26lt%3Bstrong% 26gt%3B%25

XPath:

/jcr:root/content/geometrixx//element(*, nt:unstructured)
[
jcr:like(@text, '%<strong>%') 
]

SQL2(已经涵盖... NASTY YUK ..)

SELECT * FROM [nt:unstructured] AS s WHERE ISDESCENDANTNODE([/content/geometrixx]) and text like '%<strong>%'
于 2015-06-07T11:18:40.227 回答
0

尽管我确信使用一串谓词完全有可能,但它可能会走错路。理想情况下,最好在存储或发布 HTML 时对其进行解析。所需信息将存储在相关节点上的简单属性中。与许多过于复杂的查询语法相比,仅使用 property = value 查询的查询将简单得多。它可能也会更快。因此,如果您使用 HTMLClient 之类的内容读取 HTML,然后使用 OSGI 服务对其进行解析,则可以准确地为您保存这些属性。每次更改 HTML 时,该过程都会根据需要更新这些属性。如果你的 SQL 太多了,只是一些想法。

于 2015-06-08T20:31:57.417 回答