我维护一个用 Delphi/Sql Server 编写的客户端服务器 DMS。
我想允许用户在数据库中存储的所有文档中搜索字符串。 (文件存储为 blob,它们存储为压缩文件以节省空间)。
我的想法是在“ checkin ”上对它们进行索引,因此当我存储 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,因为我已经在应用程序中使用了 ActiveX,对于 txt 文件,我可以简单地读取文件,但是对于 pdf 和 odt?
您能否建议最好的技术,甚至是可以“无所畏惧”地解析所有文件类型的第 3 方组件(也不是免费的)?
谢谢
最佳答案
以这种方式搜索文档会导致速度非常慢且使用起来不方便,我建议您生成两个附加表而不是 TEXT_CONTENT 字段。
当你解析文本时,你应该提取有值(value)的单词并尝试将它们标准化,以便你
- 摆脱小写/大写问题
- 删除可能互换使用的字符。
即,在土耳其语中,我们有 ç 字符,可以输入为 c。
- 去掉您所使用的语言中常见的动词。
即“我正在寻找的东西”、“东西”“正在寻找”可能符合您的兴趣
- 摆脱任何使用脸部的问题。
表中已有条目的每个单词都应重新使用 string_search 表中已给出的 ID。
记录可能如下所示。 原始文件表 zip ID 号 zip_file blob
字符串搜索 str_id 数字 standardized_word 文本(或具有适当二级索引的任何字符串类型)
文件字符串引用 zip ID 号 str_id 编号
我希望我能给你我的想法。
关于delphi - 检索尽可能多的文件类型的txt内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17272919/