データベースにクエリを実行して、SQL Server 2005 から全文検索のノイズ/ストップ ワードのリストを取得することはできますか?
ノイズ ワードがテキスト ファイル ~/FTData/noiseEng.txt にあることは承知していますが、このファイルにはアプリケーションからアクセスできません。
sys.fulltext_* テーブルを見てきましたが、これらには単語がないようです。
データベースにクエリを実行して、SQL Server 2005 から全文検索のノイズ/ストップ ワードのリストを取得することはできますか?
ノイズ ワードがテキスト ファイル ~/FTData/noiseEng.txt にあることは承知していますが、このファイルにはアプリケーションからアクセスできません。
sys.fulltext_* テーブルを見てきましたが、これらには単語がないようです。
これは 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 ストップリストを更新または構築するとき。ノイズ ワード ファイルをストップリストにアップグレードする方法については、全文検索のアップグレードを参照してください。
ノイズ ワード ファイルを\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