SQL Server 2025 の破壊的な変更 に次の内容があります。
アップグレード後に Full-Text クエリとポピュレーションの処理が失敗する
SQL Server 2025 では、フルテキスト検索の「ワードブレーカーとフィルター」のバージョンが 2 に変更されており、これに伴ういくつかの変更があり、影響を受ける内容が破壊的な変更とされています。
この情報についてまとめておきたいと思います。
Contents
SQL Server 2025 でフルテキスト検索を使用するモチベーション
SQL Server 2025 でフルテキスト検索を使用するモチベーションですが、インテリジェントなアプリケーション を構築する際に、ベクター検索とフルテキスト検索を組み合わせた、ハイブリッド検索を実施するケースで採用を検討することになるのではないでしょうか。
ベクターと埋め込み: よく寄せられる質問 (FAQ) でハイブリッド検索についても触れられています。
このドキュメントでは、Enhancing Search Capabilities in SQL Server and Azure SQL with Hybrid Search and RRF Re-Ranking / Semantic Reranking with Azure SQL, SQL Server 2025 and Cohere Rerank models について触れられています。
ベクター検索とフルテキスト検索を組み合わせて再ランク付けをすることで「セマンティック再ランク付け」によって、類似情報の検索を行われており、この際、フルテキスト検索の FREETEXTTABLE が使用されており、この部分で SQL Server 2025 でフルテキスト検索を使用するモチベーションにつながるかと思います。
SQL Server 2025 のフルテキスト検索の破壊的な変更について
冒頭に記載した SQL Server 2025 の破壊的な変更 でフルテキスト検索に、破壊的な変更が含まれていることについて触れらています。
詳細については、次の情報から確認をすることになるのではないでしょうか。
- SQL Server 2025 でワード ブレーカーとフィルターを変更する (SQL Server Search)
- バージョン 1 のフィルターとワード ブレーカーの一覧 (SQL Server Search)
SQL Server 2025 では既定で「バージョン 2」が使用されており、設定によって以前のバージョンの「バージョン 1」に切り替えることが可能です。
バージョン 1 向けのワードブレーカーとフィルターのファイルについては、SQL Server 2025 には含まれておらず、SQL Server 2022 からファイルをコピーするという方法をとる必要があるため、基本的にはバージョン 2 で動作させることが推奨されているかと。
Upgrading to SQL Server 2025: Three Lessons Learned でアップグレードした環境のフルテキストインデックスの問題について触れられていますが、以前の SQL Server から 2025 にバージョンアップした環境で、フルテキスト検索を実行した際に「30010」のエラーが発生した場合は、バージョン 2 への変更とフルテキストカタログの再構築というような作業を検討する必要があるようです。
私の環境で発生している問題
現在、調査中の内容で解決ができていないので情報共有レベルの内容となります。
私の環境では、「日本語を使用した FREETEXTTABLE の実行時」に 「30053」のエラーになるという事象が発生しており、この事象を解決できていません。
日本語の SQL Server 2025 の環境を使用しているのですが、次のようなクエリを実行することができていません…。
SELECT TOP (10) * FROM FREETEXTTABLE(FT_TEST, C2, N'"テスト"') AS ft GO SELECT TOP (10) * FROM FREETEXTTABLE(FT_TEST, C2, N'"テスト"', LANGUAGE N'Japanese') AS ft GO
これは、バージョン 1 に切り替えても同様でした。(バージョン 1 の場合は 30010 のエラーになります)
次のクエリについては実行ができているのですよね。
SELECT TOP (10) * FROM FREETEXTTABLE(FT_TEST, C2, N'"テスト"', LANGUAGE N'English') AS ft GO
CONTAINS については日本語でも問題なく実行できているのですが、FREETEXTTABLE を日本語を指定して実行することができていません。
SQL Server 2022 では同様の構文で実行できていたので構文の誤りということでもなさそうではあるのですが。
これについては検証を継続していますので、原因が分かったら別途投稿をしたいと思います。