Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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# 使用搜索选项保存word文档的体系结构_C#_Sql Server 2008 - Fatal编程技术网

C# 使用搜索选项保存word文档的体系结构

C# 使用搜索选项保存word文档的体系结构,c#,sql-server-2008,C#,Sql Server 2008,我们正在构建一个内部应用程序,用户可以选择在系统中保存word文档,但问题是用户应该能够通过关键字搜索这些文档。 我们使用asp.net、c#和SQLServer2008。我想知道如何将这些文档保存在Varchar字段中,然后在这些字段中搜索关键字,还是需要使用Solr/Lucene进行全文搜索 我想知道这是否是用于此目的的有效设计 提前谢谢 没有更多细节,这是不可能明智地回答的。需要考虑的几件事: 你是说把整个文档保存到数据库的varchar字段中?这听起来不太明智-你有一个问题,那就是保持数

我们正在构建一个内部应用程序,用户可以选择在系统中保存word文档,但问题是用户应该能够通过关键字搜索这些文档。 我们使用asp.net、c#和SQLServer2008。我想知道如何将这些文档保存在Varchar字段中,然后在这些字段中搜索关键字,还是需要使用Solr/Lucene进行全文搜索

我想知道这是否是用于此目的的有效设计


提前谢谢

没有更多细节,这是不可能明智地回答的。需要考虑的几件事:

你是说把整个文档保存到数据库的varchar字段中?这听起来不太明智-你有一个问题,那就是保持数据库拷贝与光盘拷贝同步(更不用说数据库拷贝的整个想法了…)

提到关键词:如果关键词数量有限,那么编写一个office interop应用程序来搜索word文档中的关键词是相当容易的。你可以在保存时保存并保存一个数据库来记录哪些文档包含哪些单词,也可以“即时”执行(即,一个应用程序可以在整个文件夹中搜索包含特定单词的文档)-这一切都取决于你可能拥有的文档数量、所需的性能等


您可以使用文档属性(添加与关键字相对应的自定义属性)并搜索具有该属性的文件吗?

如果您必须在数据库中存储word文档,并且希望能够通过一些经典关键字搜索它们,则使用,每次保存文档时,在数据库字段中放置一些关键字,并使用这些关键字进行搜索。此方法将绕过John3136提到的DB副本

如果您需要能够搜索文档的内容,那么如果文件保存为BLOB,您将无法进行搜索,因此为此,将文档保存为XML Word 2003并将全文搜索配置为忽略尖括号可能更有意义,例如:

Regex.Replace(dBFieldOfWordXMLData, @"<[^>]*>", string.Empty);
Regex.Replace(dbfieldofordxmldata,@“]*>,string.Empty);

我认为最有效的方法是使用虚拟路径提供程序,MSDN文章和Sharepoint文档使用虚拟路径提供程序,它们是可搜索的。我已经做了一些研究,了解在Azure上遇到EpiServer CMS时最有效的解决方案是什么:

保存文档后,我不需要保留光盘副本。因此我甚至可以将其保存到blob字段。但不确定这是否有助于我在该字段上搜索。在检索时,我不会显示光盘副本,而只是在备注字段中显示整个文本。因此,您不需要word文档,只需word文档中的文本即可这是一个相当大的变化。使DB理念更为可行。广告:考虑使用SharePoint,因为它已经提供了Word文档的索引。本地Windows搜索也为Word文档编制索引。@AlexeiLevenkov这是一个非常好的建议,您可以只使用WSS,而不必购买完整的SPS:那么您是说甚至不用麻烦将其保存到数据库?只需将其保存为XML word 2003文件?我说的两个选项都会保存到数据库中。第一种方法是通过虚拟路径提供程序将word文档存储到blob字段中。第二种方法是,如果您需要搜索文档内容,那么当文件保存到blob字段中时,您将不会这样做。因此,我是说,您可以将文档作为XML保存到varchar(MAX)字段中,如果varchar字段忽略了XML标记,则可以对其进行全文搜索。最后一个建议是使用VPP,但要考虑使用VPP的全文搜索选项。我会做更多的研究,看看微软用第二种方法克服了它,它必须以XML的形式存储在数据库中吗?或者它可以存储为纯文本?然后对该字段使用全文搜索?