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

发布于 2024-08-26 12:33:38 字数 363 浏览 6 评论 0原文

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

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

- 或 -

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

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

Currently we are saving files (PDF, DOC) into the database as BLOB fields. I would like to be able to retrieve the raw text of the file to be able to manipulate it for hit-highlighting and other functions.

Does anyone know of a simple way to either parse out the files and save the raw text on save, either via SQL or .net code. I have found that Adobe has a filtdump utility that will convert the PDF to text. Filtdump seems to be a command line tool, and i don't see a way to use a file stream. And what would the extractor be for Office documents and other file types?

-or-

Is there a way to pull out the raw text from the SQL Full text index, without using 3rd party filters?

Note i am trying to build a .net & MSSql solution without having to use a third party tool such as Lucene

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

鱼窥荷 2024-09-02 12:33:38

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

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

http://itextsharp.sourceforge .net/

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

Aspose.Words

编辑添加:

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

Filter Central

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

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

If it isn't absolutely necessary to stream directly from SQL Server into your app, the hard part is parsing the PDF or DOC file formats.

The iTextSharp library will give you access to the innards of a PDF file:

http://itextsharp.sourceforge.net/

Here's a commercial product that claims to parse Word docs:

Aspose.Words

Edited to add:

I think you're also asking if there are ways to make SQL Server Full-text Indexing do the work for you by adding IFilters. This sounds like a good idea. I haven't done this myself, but MS has apparently supported a Word filter for a long time, and now Adobe has released a (free) PDF filter. There's a lot of information here:

Filter Central

10 Ways to Optimize SQL Server Full-text Indexing

SQL Server Full Text Search: Language Features - a little out of date but easy to understand.

情仇皆在手 2024-09-02 12:33:38

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

以下文章展示了如何使用 .NET 中的 IFilter:http://www. codeproject.com/KB/cs/IFilter.aspx

SQL Server Full-Text Search feature uses IFilters for extracting plain text from PDF or Office file formats. You can install IFilters on your server or if your code is running on the same machine as SQL Server you're already have it.

Here is an article which shows how to use IFilters from .NET: http://www.codeproject.com/KB/cs/IFilter.aspx

划一舟意中人 2024-09-02 12:33:38

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

You could from your C# application open the .doc file and save it as text and put both the text and .doc document into the database.

鼻尖触碰 2024-09-02 12:33:38

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

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

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

If you are using SQL 2008, then you could consider using the new FILESTREAM feature.

Your data is stored in a varbinary(max) column, but you can also access the raw data via a regular Win32 handle.

Here's some sample code showing how to get the handle.

溺孤伤于心 2024-09-02 12:33:38

我遇到了同样的问题...我通过将以下内容添加到我的应用程序中解决了它:

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

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

I had this same issue... I solved it by adding the following to my application:

I use these to grab the plain text and then store it in the database alongside the binary data. Keep in mind that I am certainly not an expert, so there may be a better way to do this, but this works for everything but "Quick Save" pre-2007 Word Documents, which apparently aren't read by iFilters. I just have my users resave the document if that error occurs, and everything works fine.

Let me know if you'd like some sample code... I would post it right now, but it's a bit long.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文