5

データベースにクエリを実行して、SQL Server 2005 から全文検索のノイズ/ストップ ワードのリストを取得することはできますか?

ノイズ ワードがテキスト ファイル ~/FTData/noiseEng.txt にあることは承知していますが、このファイルにはアプリケーションからアクセスできません。

sys.fulltext_* テーブルを見てきましたが、これらには単語がないようです。

4

2 に答える 2

2

これは SQL 2005 では不可能のようですが、SQL Server 2008 では可能です。

SQL Server 2008 の全文検索を使用するための高度なクエリ

この次のクエリは、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 に答える