絶望した!SharePoint が 1500 文字以上の URL をクロールしないことに絶望した!
─某漫画のノリでタイトルつけてみました。
深い意味はありません(笑)
さて表題の件、半人前SharePointerのブログさんのエントリで初めて知り唖然としたのですが、なんと SharePoint(含 WSS )は、1500文字を超える URL は検索できない仕様だそうです。
1500文字なんて、いかない?いえいえ、ファイル・フォルダ名に日本語を使っていると(普通使いますよね)ないとは言えないのですよ。
Microsoft によると
Microsoft Office SharePoint Server 2007 および Windows SharePoint Services 3.0 では、URL に含まれる 2 バイト文字 (DBCS) を、Canonicalized UTF-8 でエンコードし、DBCS 1 文字を 9 文字の 1 バイト文字 (SBCS) に変換して扱います。このため、ドキュメント ライブラリのフォルダやファイルの名前に DBCS が多数含まれている場合、状況により、コンテンツの URL の長さがクロールの制限値である 1500 文字を超える可能性があります。
とのことです。
1500÷9=約166文字ですね。
しかし、ここで気になるのはパラメタの存在です。
通常、ライブラリにアクセスすると、FolderCTID=&View=xxxx のような、やたらと長いパラメタが付加されるので、これがインデクサによるクロールにも適応されるとしたら、実際に利用できる文字数はずっと少なくなってしまいます。
ただ、Microsoft による解説を読む限り
問題の再現手順
1. 新しいサイト コレクションを作成します。
2. Internet Explorer 8 を使用してサイトにアクセスして、ドキュメント ライブラリに 2 バイト文字で 100 文字のフォルダを作成します。
3. 手順 2. で作成したフォルダの下に 2 バイト文字で 67 文字のフォルダを作成します。
4. 手順 3. で作成したフォルダの下に “test.txt” ファイルをアップロードします。
5. フルクロールを実行します。
結果
test.txt がクロールされず、検索結果にヒットしません。
─パラメタについては、インデックス時は無視されるように読めます。
すると、
http://server/site/subsite/DocLib10/これはテストです/テストフォルダ/テストテストフォルダです/テストなので無視して下さい/テストと書いて試験中と読む/シェアポイントマニアックス/マイクロソフトオフィスシェアポイントサーバエンタープライズエディション/シェアポイントデザイナーが無料で配布されるようになりました/最近はインフォパス2003に凝っているのです.doc
この辺りが、クロールできる限界値スレスレになります。
私自身は、あまり深い階層を作るのが好きではないので問題ないレベルなのですが、こればかりは個人の趣味(?)ですからね。
実際、社内のファイルサーバや SharePoint のドキュメントライブラリの中には、もう迷宮のように(苦笑)精緻かつ深~く階層化されたものがいくつもあります。(特に経理や人事、工場本部などの管理系内勤部門に多い)
それらのファイルが検索対象にならないなんて…。
今更、ユーザに言えません(泣)
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
で、解決方法は?
SharePoint のドキュメント ライブラリのコンテンツにおいて、URL の文字数を 1500 文字以内におさめるためには、以下のガイドラインに従います。ドキュメント ライブラリのファイル名やフォルダ名では可能な限り 2 バイト文字 (DBCS) を使用しない。
無茶です。
ドキュメント ライブラリのファイル名やフォルダ名で DBCS を使用する場合は、[ドキュメント ライブラリの URL の文字数] + ([ドキュメント ライブラリの URL 以下で使用する DBCS の文字数] * 9) で求めた合計の文字数が 1500 文字を超えないようにする。
なにも解決になっていません(苦笑)
困ったものです。SP3(?)でなんとか対応してくれませんかね。
とりあえず、ユーザには気付かれるまで内緒にする方向で…orz
Microsoft サポートオンライン:SharePoint Server 2007 および SharePoint Services 3.0 で URL が 1500 文字を超えるとクロールされない
login