2

我维护一个用 Delphi/Sql Server 编写的客户端服务器 DMS。

我想让用户在存储在数据库中的所有文档中搜索一个字符串。(文件存储为 blob,它们存储为压缩文件以节省空间)。

我的想法是在“签入”上对它们进行索引,因此当我存储一个 nwe 文件时,我会提取其中的所有文本信息并将其放入一个新的数据库字段中。所以不知何故我的文件表将是:

ID_FILE integer
ZIPPED_FILE blob
TEXT_CONTENT text field (nvarchar in sql server)

我想支持至少最常见的类似文本的文件的“索引”,例如:pdf、txt、rtf、doc、docx、pdf,可能正在添加 xls 和 xlsx、ppt、pptx。

对于 MS Office 文件,我可以使用 ActiveX,因为我已经在我的应用程序中使用它,对于 txt 文件,我可以简单地读取文件,但对于 pdf 和 odt?

您能否建议最好的技术,甚至是第 3 方组件(也不是免费的),它可以“无所畏惧”地解析所有文件类型?

谢谢

4

2 回答 2

3

以这种方式搜索文档会导致使用起来非常缓慢且不方便,我建议您生成两个额外的表格而不是 TEXT_CONTENT 字段。

当您解析文本时,您应该提取有价值的单词并尝试将它们标准化,以便您 - 摆脱小写/大写问题 - 摆脱可能互换使用的字符。
即在土耳其语中,我们有可能输入为 c 的 ç 字符。- 摆脱你正在处理的语言中常见的动词。即“我正在寻找的事物”、“事物”、“正在寻找”可能符合您的兴趣——摆脱任何使用面子的问题。

表中已有条目的每个单词都应重新使用已在 string_search 表中给出的 ID。

记录可能看起来像这样。 original_file_table zip_id 编号 zip_file blob

string_search str_id numberstandardized_word 文本(或具有适当二级索引的任何字符串类型)

file_string_reference zip_id 编号 str_id 编号

我希望我能告诉你我在想什么。

于 2013-06-28T14:36:16.333 回答
2
于 2013-06-27T17:55:18.520 回答