2012-05-23 22 views
0

我们正在建立一个内部应用程序,用户必须保存在系统中word文档的选项,但问题是用户应该寻找这些文件通过关键字的能力。 我们使用asp.net,c#和Sqlserver 2008.我想知道将这些文档保存在Varchar字段中,然后在这些字段中搜索关键字,或者是否需要使用Solr/Lucene进行全文搜索。建筑保存Word文档与搜索选项

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

在此先感谢!

+1

广告:考虑使用SharePoint,因为它已经提供了Word文档的索引。本地Windows搜索索引也是Word文档。 –

+0

@AlexeiLevenkov那是一个很好的建议,你可以只使用WSS,而不必购买完全成熟的SPS:http://www.microsoft.com/en-us/download/details.aspx?id=14117 –

回答

0

如果您必须将单词文档存储在数据库中,并且希望能够通过一些经典关键字进行搜索,请使用Virtual Path Provider,每次保存文档时都会将某些关键字放在dB字段中,并使用这些关键字进行搜索。这种方法将绕过John3136提到的数据库副本。

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

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

我认为最有效的方法是使用虚拟路径提供,MSDN文章和SharePoint文档使用虚拟路径提供,他们是搜索。我做什么是最有效的解决方案跨越EpiServer CMS可以来到Azure的一些研究:http://episerverazurevpp.codeplex.com/

+0

那么你是否说,甚至费心把它保存到数据库?把它保存为XML word 2003文件? – user636525

+0

这两个选项我说DO保存到dB。第一种方法是通过虚拟路径提供程序将word文档存储到blob字段中。第二种方法是说,如果您需要搜索文档内容,那么当文件保存到Blob字段时不会执行此操作 - 所以我说您可以将Document保存为XML到varchar(MAX)字段如果忽略XML标记,则可以在varchar字段上进行全文搜索。最后的建议是说使用VPP,然后查看使用VPP的全文搜索选项。我会做更多的研究,看看MS做了什么来克服它 –

+0

使用第二种方法,它是否必须作为XML存储在数据库中?或者可以将它作为纯文本存储?然后使用针对该字段的全文本搜索? – user636525

0

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

你是说保存整个文档成varchar字段在DB?这并没有真正完善的智能 - 你有光盘复制保持数据库副本同步的整个问题(更不用提在首位DB副本的整体思路...)

你提到的关键字:如果关键字数量有限,那么编写办公互操作应用程序非常简单,该应用程序可以搜索关键字的单词doc。你可以在保存时做到这一点,并保存一个包含哪些文档的数据库,或者你可以“即时”(即一个应用程序搜索整个文件夹中包含特定单词的文档) - 它一切都取决于你有多少文档可能有,要求的性能等

你可以做(​​对应于关键字自己的自定义属性添加)的文档属性的东西,搜索与属性文件?

+0

一旦我保存文件,我不需要保留光盘的副本。所以我甚至可以将它保存到一个blob字段。但不知道这是否会帮助我在现场搜索。在回顾我不会显示光盘复制,但只显示在备忘录字段上的整个文本。 – user636525

+0

那么你真的不需要一个单词文档 - 只是文字文档中的文本? - 这是一个非常大的变化。使数据库的想法更可行... – John3136