2

目前我们正在将文件(PDF、DOC)作为 BLOB 字段保存到数据库中。我希望能够检索文件的原始文本,以便能够对其进行操作以实现高亮显示和其他功能。

有谁知道通过 SQL 或 .net 代码解析文件并在保存时保存原始文本的简单方法。我发现 Adob​​e 有一个 filtdump 实用程序,可以将 PDF 转换为文本。Filtdump 似乎是一个命令行工具,我看不到使用文件流的方法。Office 文档和其他文件类型的提取器是什么?

-或者-

有没有办法从 SQL 全文索引中提取原始文本,而不使用 3rd 方过滤器?

请注意,我正在尝试构建一个 .net 和 MSSql 解决方案,而无需使用第三方工具,例如 Lucene

4

5 回答 5

3

如果不是绝对需要直接从 SQL Server 流式传输到您的应用程序,那么难的部分是解析 PDF 或 DOC 文件格式。

iTextSharp 库可让您访问 PDF 文件的内部结构:

http://itextsharp.sourceforge.net/

这是一个声称可以解析 Word 文档的商业产品:

Aspose.Words

编辑添加:

我想您还问是否有办法通过添加 IFilter 使 SQL Server 全文索引为您完成工作。这听起来是个好主意。我自己还没有这样做,但是 MS 显然已经支持 Word 过滤器很长时间了,现在 Adob​​e 已经发布了一个(免费的)PDF 过滤器。这里有很多信息:

过滤中心

优化 SQL Server 全文索引的 10 种方法

SQL Server 全文搜索:语言功能- 有点过时但易于理解。

于 2010-03-26T20:19:54.813 回答
1

您可以从您的 C# 应用程序中打开 .doc 文件并将其保存为文本,然后将文本和 .doc 文档都放入数据库中。

于 2010-03-26T20:32:19.767 回答
1

如果您使用的是 SQL 2008,那么您可以考虑使用新的FILESTREAM功能。

您的数据存储在 varbinary(max) 列中,但您也可以通过常规 Win32 句柄访问原始数据。

这是一些示例代码,展示了如何获取句柄。

于 2010-03-30T09:24:10.330 回答
1

我有同样的问题......我通过在我的应用程序中添加以下内容来解决它:

我使用这些来获取纯文本,然后将其与二进制数据一起存储在数据库中。请记住,我当然不是专家,因此可能有更好的方法来执行此操作,但这适用于除“快速保存”2007 年之前的 Word 文档之外的所有内容,iFilters 显然不读取这些文档。如果发生该错误,我只是让我的用户重新保存文档,并且一切正常。

如果您想要一些示例代码,请告诉我...我现在会发布它,但它有点长。

于 2010-03-31T16:04:17.567 回答
1

SQL Server 全文搜索功能使用 IFilters 从 PDF 或 Office 文件格式中提取纯文本。您可以在您的服务器上安装 IFilter,或者如果您的代码与 SQL Server 在同一台计算机上运行,​​您已经拥有它。

这是一篇文章,展示了如何使用 .NET 中的 IFilter:http: //www.codeproject.com/KB/cs/IFilter.aspx

于 2010-04-04T17:06:54.910 回答