查询SQl Server 2005全文搜索噪音/停用词

时间:2009-08-12 10:48:44

标签: sql-server-2005 full-text-search stop-words noise-words

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

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

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

2 个答案:

答案 0 :(得分:2)

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

Advanced Queries for Using SQL Server 2008 Full Text Search StopWords / StopLists

  

下一个查询获取所有的查询列表   SQL附带的停用词   Server 2008.这很好   改进,你不能这样做   SQL Server 2005。

Stopwords and Stoplists - SQL Server 2008

  

SQL Server 2005噪音词已经出现过   用停用词代替。当一个数据库   从a升级到SQL Server 2008   以前的版本,噪音单词文件   不再在SQL Server 2008中使用。   但是,噪音词文件是   存储在FTDATA中   FTNoiseThesaurusBak文件夹,和你   可以在以后更新时使用它们   构建相应的SQL Server   2008年候选名单。有关的信息   将noise-word文件升级到   停止列表,请参阅全文搜索   升级。

答案 1 :(得分: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