【发布时间】:2011-06-10 18:26:25
【问题描述】:
我有一个 SQL Server 2008 数据库,其中一个表启用了 FileStream。对于这个问题的其余部分,我将此表称为 Tbl_FileStream。
Tbl_FileStream 包含数十万个文件,从 PDF 到 JPG 再到 TXT 文件。
另外,Tbl_FileStream 具有在 FileStream 上创建的全文索引。全文索引工作得非常好,我有一个存储过程可以对它进行全文搜索(使用 CONTAINSTABLE 和 RANK),而且效果也很好。
但是,当在 FileStream 上搜索时,全文搜索能够返回给我时,我发现自己陷入了困境。例如,我们要搜索短语“et dolore”,然后我的搜索将产生表明 59 个文档与搜索词匹配的结果。当然,我可以获取找到匹配的文档的标题,因为我将文档标题存储在 Tbl_FileStream 中,但我真正需要的是在实际文件中获取搜索词周围的文本.
例如,假设我有一个包含以下拉丁文的文本文档——
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua。在 vero eos et accusam et justo duo dolores et ea rebum。 Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet。
使用 SQL Server 的全文搜索功能,如果我要搜索单词“et dolore”,那么我真正需要返回给我的是一些任意数量的单词(大约 10 个),然后是在其中找到搜索词的位置文件,所以我实际上会得到类似“... sed diam nonumy eirmod tempor invidunt ut labore et dolore ...”这样的短语。
对于那些想知道为什么世界上会有人想要这样做的人来说,原因是因为消费者希望快速浏览在每次点击中找到搜索词的上下文。换句话说,他们希望快速浏览搜索结果并尝试查看哪些文档命中可能包含他们正在寻找的内容。
这可以在 SQL Server 2008 中实现吗?
如果没有,那么是否有支持此功能的后端?
提前感谢我在这个困难的主题上收到的所有建议和帮助。
【问题讨论】:
标签: sql-server-2008 full-text-search filestream lucene