我正在尝试确定是否可以使用全文搜索从存储在启用 FILESTREAM 的列中的 xml blob 中检索属性(属性)值。下面是一个示例,其中 message 是一个varbinary(max)
存储 xml 消息的字段:
SELECT message FROM AuditTable
WHERE CONTAINS ( PROPERTY ( message, 'AccountNo' ), '123456');
在 MSDN 页面Search Document Properties with Search Property Lists上,页面顶部的摘要包含以下声明:“另一方面,XML IFilter 不发出属性。”
我很困惑,因为这似乎适用于 XML 文档。我开始准备一个环境来测试,但我想先问一下,以防万一有人已经知道了。
如果您说的是 Word 或 Excel 文档,那么这些文档具有众所周知的属性,例如作者、标题、关键字等,您可以将这些属性与搜索属性列表和全文索引相关联。可用的属性取决于它们的 IFilter。您可以使用 PROPERTY 关键字来查询这些属性。
但是对于 .xml 文件,文档不太可能具有这些自定义属性,而您真正想要做的是搜索 xml 内容。AccountNo 听起来只是 xml 中的一个属性,而不是文档属性。您可以使用普通的全文搜索方法搜索您的 xml,但是在全文索引中将忽略 xml 标记和属性名称。您可以查询属性和元素内容。您还可以将文件内容转换为 xml 并使用内置的 xml 方法,例如 .query、.nodes、.value 和 .exist。完成这个演示,看看它是否有意义:
我还进行了测试,但无法按照文档的建议让 xml 文档发出任何属性。然而,我可以让它与标准的 Word 文档一起使用。