【问题标题】:How to search through thousands of files to text efficiently in real-time如何实时有效地搜索数千个文件到文本
【发布时间】:2016-03-23 17:54:56
【问题描述】:

我正在重构文档存储服务的站点,以从专有存储系统转换为 SQL。一切进展顺利,但我需要找到一种方法来在我们的存储库中搜索特定的文本字符串。我们使用多种不同的文件类型(.xls、.xlsx、.doc、.txt 等)。首先通过使用 PDFSharp 逐行重建将它们转换为 PDF,从而将它们显示给用户。

速度不是查看/搜索单个文件的考虑因素,但我担心可扩展性。我能够通过复制然后挂钩到我们的转换过程来进行有效的文本搜索,但我相当确定这不适用于搜索客户的整个文档列表(成千上万的文档)。如果这些都是统一的文件类型,可能会更容易做到,但事实并非如此。

有没有一种我不知道的有效方法?

编辑:文档存储在服务器上,并通过数据库中的文档 URL 进行引用

【问题讨论】:

  • 您了解 SQL Server 中的全文搜索功能吗?你试过了吗?
  • 我不是。我研究了全文搜索,但我们的文件没有存储为文本文件,所以我不知道 SQL 服务器是否可以索引文件(它们必须先转换)。这纯粹是一种无知,但全文索引不需要将整个内容以文本形式存储在数据库中吗?我将如何从中获取页码?
  • 你的问题我不清楚。你有专有格式的文件,什么?您需要“实时”将它们导入 SQL 吗?我无法想象任何需要这样做的场景,所以我一定误解了您的需求。
  • @NicholasMansfield,要使用文本搜索,您不需要 TEXT 格式,SQL Server 可以处理所有 Office 文档、PDF 等。所以您甚至不需要将文件转换为文本。
  • @Tab 文件不是专有格式,我们的旧数据库系统是。这意味着我不能只使用他们的算法。

标签: c# sql-server full-text-search


【解决方案1】:

我的建议是在 SQL 或文件中建立索引。将文件与每个文件中所有可能感兴趣的搜索词匹配。

【讨论】:

  • 我怎么知道感兴趣的术语/只是不包括列表中的所有单词(“the, an, ' ' 等)?
  • 这是一个我不可能知道答案的业务规则问题。不过,从开发的角度来看,拥有黑名单(除这些之外的所有单词)或白名单(仅这些单词)绝对是一种处理方式。
  • 谢谢。这有帮助。
猜你喜欢
  • 2017-09-09
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
相关资源
最近更新 更多