是否可以通过查询数据库从 SQL Server 2005 中获取全文搜索噪音/停用词的列表?
我知道干扰词位于文本文件 ~/FTData/noiseEng.txt 中,但我们的应用程序无法访问该文件。
我查看了 sys.fulltext_* 表,但这些似乎没有单词。
是否可以通过查询数据库从 SQL Server 2005 中获取全文搜索噪音/停用词的列表?
我知道干扰词位于文本文件 ~/FTData/noiseEng.txt 中,但我们的应用程序无法访问该文件。
我查看了 sys.fulltext_* 表,但这些似乎没有单词。
似乎这在 SQL 2005 中是不可能的,但在 SQL Server 2008 中是不可能的。
使用 SQL Server 2008 全文搜索 StopWords / StopLists 的高级查询
下一个查询获取 SQL Server 2008 附带的所有停用词的列表。这是一个很好的改进,您不能在 SQL Server 2005 中执行此操作。
SQL Server 2005 干扰词已被停用词取代。当数据库从以前的版本升级到 SQL Server 2008 时,SQL Server 2008 中不再使用干扰词文件。但是,干扰词文件存储在 FTDATA\ FTNoiseThesaurusBak 文件夹中,您可以稍后使用它们在更新或构建相应的 SQL Server 2008 停止列表时。有关将干扰词文件升级为停止列表的信息,请参阅全文搜索升级。
我只是将干扰词文件从\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