我有一些.doc二进制文件存储在我的数据库中,我现在想要搜索它们(不将它们转换为.doc),看看哪一个包含单词“hello”。
有没有办法在二进制文件中进行此搜索?
答案 0 :(得分:1)
您可以沿着使用商业工具的路线前进。 Aspose.Words可以从流中加载文档,并具有各种方法来查找文档中的文本。
如果您有来自数据库的流,那么您的代码将如下所示:
Aspose.Words.Document doc = new Aspose.Words.Document(streamObjectFromDatabase);
if (doc.GetText().ToLower().Contains("hello world"))
MessageBox.Show("Hello World exists");
注意:此工具的好处是它不需要安装Word对象,它可以在内存中使用流。
答案 1 :(得分:0)
据我所知,并非没有太大的痛苦。根据{{3}},微软在过去几年内终于发布了.doc规范。因此,如果您有时间,可以根据规范创建解析器,假设您的所有文档都是.doc格式的相同版本。
当然,您可以在所有二进制数据中搜索您正在寻找的文本,前提是实际文本存储为纯文本。但即使这个假设是正确的,你怎么能确定你找到的纯文本是实际的文档文本,而不是一些同样存储在纯文本中的文档元数据?而二进制数据总是与您的文本模式匹配的可能性很小。
如果您可以使用Word库,我会走这条路。如果没有,本土解析器可能是你最不好的选择。