0

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

我想知道这是否是为此目的的有效设计。

提前致谢 !

4

2 回答 2

0

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

您是说将整个文档保存到数据库中的 varchar 字段中吗?这听起来并不聪明 - 你有保持数据库副本与磁盘副本同步的整个问题(更不用说首先是数据库副本的整个想法......)

您提到关键字:如果关键字数量有限,那么编写一个在 word doc 中搜索关键字的办公室互操作应用程序相当容易。您可以在保存时执行此操作并保留哪些文档包含哪些单词的数据库,或者您可以“即时”执行此操作(即,一个应用程序在整个文件夹中搜索包含特定单词的文档) - 它一切都取决于您可能拥有多少文档,所需的性能等。

您可以对文档属性做些什么(添加您自己的与关键字对应的自定义属性)并搜索具有该属性的文件吗?

于 2012-05-23T03:49:35.940 回答
0

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

如果您需要能够搜索文档的内容,如果文件保存为 blob,您将无法执行此操作,因此出于此目的,将文档另存为 XML Word 2003 并配置完整文件可能更有意义文本搜索忽略尖括号,例如:

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

我认为最有效的方法是使用 Virtual Path Provider,MSDN 文章和 Sharepoint 文档使用 Virtual Path Provider,它们是可搜索的。我已经对 Azure 上的 EpiServer CMS 最有效的解决方案进行了一些研究:http: //episerverazurevpp.codeplex.com/

于 2012-05-23T04:16:01.923 回答