【发布时间】:2009-04-28 21:24:10
【问题描述】:
我们的应用程序允许您将任何文件类型作为 blob/图像保存到 MS SQL DB 中。我现在必须提供在文件中搜索文本的功能。类似于标准的 Windows“在文件中查找”搜索。
实现这一目标的最佳方法是什么?我使用 StreamReader 从文件中读取所有文本,然后使用 Regex 进行匹配。只是不确定这是否是在文件中搜索的最有效方式。
谢谢
【问题讨论】:
我们的应用程序允许您将任何文件类型作为 blob/图像保存到 MS SQL DB 中。我现在必须提供在文件中搜索文本的功能。类似于标准的 Windows“在文件中查找”搜索。
实现这一目标的最佳方法是什么?我使用 StreamReader 从文件中读取所有文本,然后使用 Regex 进行匹配。只是不确定这是否是在文件中搜索的最有效方式。
谢谢
【问题讨论】:
您应该查看 SQL Server 的全文搜索功能。
这里有一些不错的文章:
Full-Text Search
SQL Server Full Text Search
SQL Server Full-Text Indexing
我想你会发现尝试从数据库中拉回许多大记录然后在内存中搜索它们是非常低效的。这是您的 RDBMS 擅长的领域,如果配置正确,可以让您的生活变得更简单。
【讨论】:
如果在 sql server 中使用全文搜索可能会节省很多时间?这将让您查询文件以及处理一些非常复杂的查询。它能够使用 iFilters(如 microsoft frontpage)在 blob 中搜索
这是一本很好的基础知识入门http://aspalliance.com/1512_understanding_full_text_search_in_sql_server_2005。
这样做,您可以利用 MS 在全文搜索中所做的工作;如果您的文件类型不受支持(直接支持大多数评论文档格式,或者它们的生产者 doc、docx、xls、pdf 等),则可以从他们的界面中获益
【讨论】:
在我看来,搜索应该由经过优化的 sql server 来完成
【讨论】: