【发布时间】:2010-02-13 10:33:21
【问题描述】:
我想在数据库中存储一个 Word 文档 (.doc),我需要提供对 Word 文档集合的搜索并突出显示这些单词。
我正在使用 VS2005 --> ASP.NET、C#.NET、SQL Server。
【问题讨论】:
标签: c# asp.net sql-server
我想在数据库中存储一个 Word 文档 (.doc),我需要提供对 Word 文档集合的搜索并突出显示这些单词。
我正在使用 VS2005 --> ASP.NET、C#.NET、SQL Server。
【问题讨论】:
标签: c# asp.net sql-server
您可以将其作为BLOB (Binary Large OBject). 存储在数据库中
类似的东西会起作用
string filePath = "";
string connectionString = "";
FileStream stream =
new FileStream(filePath, FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(stream);
byte[] file = reader.ReadBytes((int)stream.Length);
reader.Close();
stream.Close();
SqlCommand command;
SqlConnection connection = new SqlConnection(connectionString);
command =
new SqlCommand("INSERT INTO FileTable (File) Values(@File)", connection);
command.Parameters.Add("@File", SqlDbType.Binary, file.Length).Value = file;
connection.Open();
command.ExecuteNonQuery();
看看这篇文章更多 详情:
【讨论】:
您可以如上所述将文档存储为 BLOB。然后,您需要一些索引内容的方法,以便您可以搜索。
您可以粗略地将 Word 文档的内容提取为文本,将其与文档一起存储,然后使用关键字查询此新列。
不过,这不会特别快速或有效。看起来全文索引可以解决问题:http://www.codeproject.com/KB/architecture/sqlfulltextindexing.aspx 显然 Office 文档可以被索引。
输入关键字后,您可以查询全文索引,查找匹配的文档,然后打开文档并使用 Office 主要互操作组件或 VSTO 突出显示单词。
【讨论】:
您的网站是公开的吗?一个很好的非常规解决方案是使用 Google。输入谷歌:
站点:www.yoursite.com 文件类型:doc searchTerm
这是一个例子。请注意 View HTML 链接突出显示文本。 WhiteHouse.gov OMB Search
如果你想变得花哨,你可以使用WebRequest对象在服务器上向谷歌发出请求,然后解析出响应以在你的页面上显示ViewHtml链接。
【讨论】: