5

是否可以通过查询数据库从 SQL Server 2005 中获取全文搜索噪音/停用词的列表?

我知道干扰词位于文本文件 ~/FTData/noiseEng.txt 中,但我们的应用程序无法访问该文件。

我查看了 sys.fulltext_* 表,但这些似乎没有单词。

4

2 回答 2

2

似乎这在 SQL 2005 中是不可能的,但在 SQL Server 2008 中是不可能的。

使用 SQL Server 2008 全文搜索 StopWords / StopLists 的高级查询

下一个查询获取 SQL Server 2008 附带的所有停用词的列表。这是一个很好的改进,您不能在 SQL Server 2005 中执行此操作。

停用词和停用列表 - SQL Server 2008

SQL Server 2005 干扰词已被停用词取代。当数据库从以前的版本升级到 SQL Server 2008 时,SQL Server 2008 中不再使用干扰词文件。但是,干扰词文件存储在 FTDATA\ FTNoiseThesaurusBak 文件夹中,您可以稍后使用它们在更新或构建相应的 SQL Server 2008 停止列表时。有关将干扰词文件升级为停止列表的信息,请参阅全文搜索升级。

于 2009-08-12T11:16:50.530 回答
0

我只是将干扰词文件从\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData我的应用程序中复制出来,然后用它来去除干扰词。

    Public Function StripNoiseWords(ByVal s As String) As String
        Dim NoiseWords As String = ReadFile("/Standard/Core/Config/noiseENU.txt").Trim
        Dim NoiseWordsRegex As String = Regex.Replace(NoiseWords, "\s+", "|") ' about|after|all|also etc.
        NoiseWordsRegex = String.Format("\s?\b(?:{0})\b\s?", NoiseWordsRegex)
        Dim Result As String = Regex.Replace(s, NoiseWordsRegex, " ", RegexOptions.IgnoreCase) ' replace each noise word with a space
        Result = Regex.Replace(Result, "\s+", " ") ' eliminate any multiple spaces
        Return Result
    End Function
于 2010-01-22T22:09:11.783 回答