トップ回答者
全文検索の類義語の再構築が失敗する件について。

質問
-
お世話になっております。
SQLServer2008にて簡単に全文検索エンジンが可能であるか調査しています。顧客要件として、"a"と"あ"を同一としてみたい(この例は極端でしょうが、例えばinternationalとインターナショナルとか)、と言う用件があるので、この部分を類義語辞典に登録する事により対応しようとしています。
なので、C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\FTData\tsjpn.xmlを編集して、類義語を登録し、
> exec sp_fulltext_load_thesaurus_file 1041
しようとするのですが、英語と日本語が混在すると、エラーとなってしまいます。
> メッセージ 50000、レベル 16、状態 1、プロシージャ sp_fulltext_rethrow_error、行 36
> Error 30049, Level 16, State 1, Procedure sp_fulltext_thesaurus_update, Line 61, Message: フルテキスト類義語辞典の内部エラー (HRESULT = '0x8007054e')
spの名前も違っていて、なんだか意味が分かりません。
類義語の内容は以下のようになっています。(まだ評価中なのでヘンですが)
<XML ID="Microsoft Search Thesaurus">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>0</diacritics_sensitive>
<expansion>
<sub>goldman sachs</sub>
<sub>bank</sub>
<sub>銀行</sub>
</expansion>
</thesaurus>
</XML>
★<sub>銀行</sub> 部分を削除すると、sp_fulltext_load_thesaurus_file()は正常終了してくれます。
何故日本語が混在すると失敗するのか分かりません。どなたか、情報を持っている人は、おしえて下さい。
よろしくお願いします。
回答
-
2バイト文字の照合順序に設定されたデータベースにおいて、2バイト文字を含む類義語辞典ファイルを登録した際に発生するという現象を経験したことがあります。
尚、1バイト文字の照合順序に設定されたデータベース上では発生しませんでした。
そのため、以下のようにされて、登録が出来るかどうかを確認されてはどうでしょう。
USE master
GO
CREATE DATABASE temp_sbcs COLLATE SQL_Latin1_General_CP1_CI_AS
GO
USE temp_sbcs
GO
EXEC sys.sp_fulltext_load_thesaurus_file 1041
GO
USE master
GO
DROP DATABASE temp_sbcs
GO- 回答の候補に設定 nagino - 引退エンジニア 2010年1月6日 1:47
- 回答としてマーク 高橋 春樹 2010年1月18日 9:34
すべての返信
-
2バイト文字の照合順序に設定されたデータベースにおいて、2バイト文字を含む類義語辞典ファイルを登録した際に発生するという現象を経験したことがあります。
尚、1バイト文字の照合順序に設定されたデータベース上では発生しませんでした。
そのため、以下のようにされて、登録が出来るかどうかを確認されてはどうでしょう。
USE master
GO
CREATE DATABASE temp_sbcs COLLATE SQL_Latin1_General_CP1_CI_AS
GO
USE temp_sbcs
GO
EXEC sys.sp_fulltext_load_thesaurus_file 1041
GO
USE master
GO
DROP DATABASE temp_sbcs
GO- 回答の候補に設定 nagino - 引退エンジニア 2010年1月6日 1:47
- 回答としてマーク 高橋 春樹 2010年1月18日 9:34
-
こんにちは、フォーラムオペレーターの高橋春樹です。
NOBTAさん、naginoさん
いつもお世話になっております。にっきーさん
MSDNフォーラムのご利用有難うございます。NOBTAさんとnaginoさんからアドバイスを頂いたと思うのですが、試して頂けたでしょうか?
皆様からの投稿が、有用な情報だと思いましたので、勝手ながら、
回答マークを付けさせてもらいました。
もし、問題がありましたら、回答マークを削除することも可能です。
そのときは、詳しい状況をお伝えして頂ければと思います。今後ともMSDNフォーラムを宜しくお願いします(^_^)
マイクロソフト株式会社 フォーラム オペレーター 高橋春樹 -
本問題について、ご迷惑をおかけしております。KB を公開いたしましたので、必要に応じてご参照ください。
(現在は英語版のみですが、日本語版も公開の予定です。)
Loading thesaurus file fails with ERROR_INTERNAL_DB_CORRUPTION in SQL Server versions that use DBCS collation
http://support.microsoft.com/kb/2014749
なお、問題の回避方法については、前のスレッドで NOBTA さんがご説明しているのと同様の手順になります。