我使用带有 FileTables 的 SQL Server 2014 来存储大量不同格式的文档。iFilter 运行良好,所有内容都使用 FTS + 语义搜索编制索引。现在我想对这些文档的文本进行一些额外的处理,但没有理由让管道重做解码、提取等文件中的文本的工作。
似乎应该有一个明显的解决方案......但我一直在兜圈子,没有任何运气。
所以问题是:
如何查询以在 T-SQL 中返回文件的完整纯文本?
如果这是不可能的,可以在正常的 FTS 解析器运行后在 SSIS 或 SSAS 中完成吗?
如果这是不可能的,有没有办法连接到 FTS 管道(可能通过触发器),以便我可以将纯文本拆分到另一个表中?
如果您有很好的示例供我参考,也欢迎使用其他解决方案。我唯一的直接想法是使用不同的网络共享进行下载,让 SSIS 拿起文件并提取文本(不知道怎么做),然后将文件 + 文本移动到 SQL 服务器......但是由于很多原因,这似乎很不稳定。
[编辑以澄清“为什么”]
如果 SQL Server 已经提取了文本以便对其进行分块并为语义索引执行基本 NLP ......我宁愿使用它而不是重新发明轮子。我正在研究的具体用途是使用其他 NLP 实用程序(例如 NLTK、GenSim、Stanford NLP NER 等)进行后处理,以便我可以生成提取文档摘要,为我的语料库存储 n-gram 统计信息,并将 NER 包括在内更有效的分面搜索。
如果我必须在将文件存储在 SQL Server 之前从文件中提取文本(使用 SSIS/.NET 以便我可以保留 iFilter 或完全使用不同的工具),则 SQL Server 在 FileTables 上执行该工作的能力有限除了最基本的任务之外的任何事情。
考虑已经支持的文档格式的数量 - 重新创建该功能是一项主要任务。同样,之后必须返回到实际文件并重做索引工作效率低下,在 FileTables 上禁用 FTS,完全跳过使用它们,或者完全废弃 SQL Server 以使用基于文档的 FTS,这似乎是明智的。