Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将SQL Server中的二进制文件另存为BLOB和text(或从全文索引中获取文本)_C#_Asp.net_Sql Server_Search Engine_Full Text Indexing - Fatal编程技术网

C# 将SQL Server中的二进制文件另存为BLOB和text(或从全文索引中获取文本)

C# 将SQL Server中的二进制文件另存为BLOB和text(或从全文索引中获取文本),c#,asp.net,sql-server,search-engine,full-text-indexing,C#,Asp.net,Sql Server,Search Engine,Full Text Indexing,目前,我们正在将文件(PDF、DOC)作为BLOB字段保存到数据库中。我希望能够检索文件的原始文本,以便能够对其进行操作,以实现点击高亮显示和其他功能 有没有人知道一种简单的方法,可以通过SQL或.net代码解析文件并在保存时保存原始文本。我发现Adobe有一个filtdump实用程序,可以将PDF转换为文本。Filtdump似乎是一个命令行工具,我看不到使用文件流的方法。对于Office文档和其他文件类型,提取器是什么 -或- 有没有一种方法可以在不使用第三方过滤器的情况下从SQL全文索引中提

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

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

-或-

有没有一种方法可以在不使用第三方过滤器的情况下从SQL全文索引中提取原始文本


注意:我正在尝试构建一个.net&MSSql解决方案,而不必使用第三方工具(如Lucene)

如果不一定要直接从SQL Server流式传输到应用程序中,那么最困难的部分是解析PDF或DOC文件格式

iTextSharp库将允许您访问PDF文件的内部:

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

编辑以添加:

我想您也在问,是否有办法通过添加iFilter让SQL Server全文索引为您完成这项工作。这听起来是个好主意。我自己并没有这样做过,但微软显然很长一段时间以来一直支持单词过滤器,现在Adobe发布了一个(免费)PDF过滤器。这里有很多信息:


有点过时,但容易理解。

< P>你可以从你的C应用程序打开.doc文件并保存为文本,并将文本和.doc文档都放到数据库中。

如果你使用SQL 2008,那么你可以考虑使用新的特性。

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


显示如何获取句柄。

我也遇到了同样的问题。。。我通过在应用程序中添加以下内容解决了此问题:

  • (适用于除Office 2007之外的所有项目) 文档,由于64x Windows问题)
  • (适用于Office 2007文件)
我使用这些来获取纯文本,然后将其与二进制数据一起存储在数据库中。请记住,我当然不是专家,因此可能有更好的方法来做到这一点,但这适用于除“快速保存”2007年以前的Word文档之外的所有文档,这些文档显然不被iFilter读取。我只是让我的用户在出现错误时重新保存文档,一切正常


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

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


这里有一篇文章介绍如何使用.NET中的iFilter:

如果您对迄今为止出现的答案添加注释,我们可以改进我们的答案。这只对.doc格式有帮助。还有其他通用的方法吗?FILESTREAM用于处理原始文件。我们以原始格式(二进制或文本)与SQL进行数据传输。我想了解二进制文件的索引文本,索引器正在索引。既然SQL已经通过它自己的过滤器提取文本,为什么需要使用其他工具?既然SQL已经通过它自己的过滤器提取文本,为什么需要使用其他工具?您是否发现这两个过滤器组合起来解决了大多数需要索引的文件格式?我相信SQL Server使用IFilter读取文本,因此EPocalipse dll使用的过滤器与SQL Server相同。我同意,让SQL Server返回纯文本会容易得多,但我找不到这样做的方法。iFilter应该能够读取Microsoft可以索引的任何内容的文本,我甚至记得看到过使用iFilter来读取图像中的文本,但我只需要处理.doc、.docx和.pdf文件,所以我无法验证这一点。