【问题标题】:To store and search word documents using C#.NET,ASP.NET使用 C#.NET、ASP.NET 存储和搜索 word 文档
【发布时间】:2010-02-13 10:33:21
【问题描述】:

我想在数据库中存储一个 Word 文档 (.doc),我需要提供对 Word 文档集合的搜索并突出显示这些单词。

我正在使用 VS2005 --> ASP.NET、C#.NET、SQL Server。

【问题讨论】:

    标签: c# asp.net sql-server


    【解决方案1】:

    您可以将其作为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();
    

    【讨论】:

    • 感谢您的帮助。我还需要在文档中搜索关键字并在显示时突出显示。如何在asp.net中做到这一点。
    • 这不是简单的陈述。通常,应用程序包含一个用于搜索的整个模块/单元。
    • 我建议在存储数据之前打包数据(gzip,这是在标准 C# 库中)。我们可以减少 80% 的空间使用。在现代处理器上,解压缩数据比从磁盘读取额外 80% 的数据要快。
    【解决方案2】:

    您可以如上所述将文档存储为 BLOB。然后,您需要一些索引内容的方法,以便您可以搜索。

    您可以粗略地将 Word 文档的内容提取为文本,将其与文档一起存储,然后使用关键字查询此新列。

    不过,这不会特别快速或有效。看起来全文索引可以解决问题:http://www.codeproject.com/KB/architecture/sqlfulltextindexing.aspx 显然 Office 文档可以被索引。

    输入关键字后,您可以查询全文索引,查找匹配的文档,然后打开文档并使用 Office 主要互操作组件或 VSTO 突出显示单词。

    【讨论】:

      【解决方案3】:

      您的网站是公开的吗?一个很好的非常规解决方案是使用 Google。输入谷歌:

      站点:www.yoursite.com 文件类型:doc searchTerm

      这是一个例子。请注意 View HTML 链接突出显示文本。 WhiteHouse.gov OMB Search

      如果你想变得花哨,你可以使用WebRequest对象在服务器上向谷歌发出请求,然后解析出响应以在你的页面上显示ViewHtml链接。

      【讨论】:

        猜你喜欢
        • 2011-04-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多