gpt4 book ai didi

sql-server-2008 - 全文搜索SQL Server 2008 FileStream

转载 作者:行者123 更新时间:2023-12-04 06:56:41 25 4
gpt4 key购买 nike

我有一个带有启用了FileStream的表的SQL Server 2008数据库。对于该问题的其余部分,我将将此表称为Tbl_FileStream。

Tbl_FileStream包含数十万个文件,范围从PDF到JPG到TXT文件。

另外,Tbl_FileStream具有在FileStream上创建的全文本索引。全文索引工作出色,我有一个存储过程可以对其进行全文搜索(使用CONTAINSTABLE和RANK),并且它也很好用。

但是,当在FileStream上搜索时,全文搜索受到打击时,我发现自己全都可以返回我的位置。例如,我们要搜索短语“ et dolore”,然后我的搜索将产生表明59个文档与搜索词匹配的结果。当然,我可以找到匹配的文档标题,因为我将文档标题存储在Tbl_FileStream中,但是我真正需要的是在实际文件中获取搜索词周围的文本。

例如,假设我有一个文本文件,其中包含以下拉丁语-
Lorem ipsum dolor就座,set diam nonumy eirmod tempor invitunt ut labour et dolore magna aliquyam erat,sed diam voluptua在Vero eos etAccusam和Justo duo dolores等处。 Stet Clita Kasd Gubergren,没有大海,也没有Lorem ipsum dolor坐下。

使用SQL Server的全文本搜索功能,如果我要搜索“ et dolore”一词,那么我真正需要返回给我的是任意数目的单词(大约10个),继续在文档中找到搜索词的地方,因此我实际上会得到一些短语,例如“ ... sed diam nonumy eirmod tempor invidunt ut labour et dolore ...”。

对于那些想知道为什么世界上有人愿意这么做的人,原因是因为消费者希望快速浏览一下每次匹配中都找到搜索词的上下文。换句话说,他们希望快速浏览一下搜索结果,并尝试查看哪些文档匹配包含您要查找的内容。

这可能在SQL Server 2008中完成吗?

如果没有,那么是否有任何后端可以支持这一点?

在此先感谢您提出的所有建议和对这一棘手主题的帮助。

最佳答案

仅使用SQL Server 2008

如果您坚持使用SQL Server 2008,则必须将要搜索的每个文件的文本内容存储在数据库中。这意味着对于图像文件类型,您将必须在文件上使用OCR程序,并将文本的副本保留在数据库中,以便可以对其进行搜索。这也意味着,无论出于何种原因,如果目标文件的内容超过2 GB,您都将不得不跳跳。

因此,我们假设您在文件元数据表中具有以下列,如下所示:

TextContents nvarchar(max) null

然后,我们可以使用类似于以下内容的方式提取上下文:

Declare @SearchTerm nvarchar(max)
Declare @MaxResultTextLen int

Set @SearchTerm = 'et dolore'
Set @MaxResultTextLen = 100

Select CharIndex(@SearchTerm, F.TextContents),
Case
When CharIndex(@SearchTerm, F.TextContents) <= @MaxResultTextLen
Then Substring(F.TextContents, 1, @MaxResultTextLen) + '...'
Else Substring(@SearchTerm
, CharIndex(@SearchTerm, R.TextContents)
- @MaxResultTextLen + Len(@SearchTerm)
, @MaxResultTextLen) + '...'
End As TextContext
From Files As F
Where Contains(F.TextContents, @SearchTerm)


使用第三方搜索引擎

一个更接近您想要实现的解决方案的方法是使用第三方搜索引擎,该引擎将返回带有找到的搜索词的上下文。但是,同样,必须对图像文件和图像类型的PDF进行OCR,以便引擎可以搜索文本内容。在一个名为dtSearch的引擎上进行了快速搜索(我没有使用过,也没有为它们工作),我发现它提供了显示“突出显示的匹配项”的功能,意思是向用户显示文件中所定位术语的上下文。

dtSearch

关于sql-server-2008 - 全文搜索SQL Server 2008 FileStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com