WIN1@Codename

Codename

WSS3.0における全文検索について 解決編

Codename開始以来、完全に提供できていなかった全文検索がようやく可能となりました。

こちら の記事でも触れましたが、WSS3.0の検索はこれまでと仕様が異なるため、インターネット上で使用するには問題があり、この問題解決のため、実に2年間の時間を要することになってしまいました。

ここで、WSS3.0の検索の仕組みを説明します。

こちら でも説明しましたが、WSS3.0では"SPSearch(Windows SharePoint Service Search)" が検索インデックスの作成を行います。 このサービスにより、WSSコンテンツ内の記事やドキュメントのインデックス(見出し)がSQLデータベース内に格納され、ユーザーの検索リクエストによって参照されることになります。

この、SPSearch=mssearch.exe はWSS内のコンテンツを直接参照してインデックスを集めてきます。 

当然、WSSのユーザーサイトは認証がかかっているため、mssearch.exe は管理権限を使用してユーザーサイトにログインしようとします。 この時にmssearch.exe は統合Windows認証のみ使用することができません。

社内で公開しているWSSのWebサーバーであれば統合Windows認証はもちろん推奨されるべき認証方法なのですが、Codenameのようにインターネット上に公開しているサーバーで使用されるのは、基本認証が一般的です。

その為、当初から基本認証でWSSのWebサーバーを公開していたCodenameでは、mssearch.exe がユーザーサイトにログオンできず、コンテンツインデックスを収集することができなくなっておりました。

これが、検索が当初出来なかった最大の原因です。

そこで、今度は、基本認証を使用しつつ、検索を実現する方法を探すこととなります。

かなりの時間を要しましたが以下の方法で実現可能となりました。

大まかな仕組みを説明しますと、ユーザーが使用するサイトはこれまで通り基本認証を使用して公開しつつ、mssearch.exe が参照するサイトは統合Windows認証でもう一つサイトを作成する、ということになります。

WSSはSQLサーバーに各サイトのコンテンツを格納しています。

このデータは必ずしも一つのサイトからの参照には限定されず、複数のサイトから参照することが可能です。

SQLサーバーに複数のWebサーバーからアクセスしてWebサーバーの負荷分散を実現できるのもこの仕様のためです。

では、具体的にどうサイトを構成するのか。

以下を参照してください。

1. WSS 側で新規 Web アプリケーションを以下の手順にて作成します。
1-1. “SharePoint 3.0 全体管理” にアクセスします。
1-2. “アプリケーションの構成の管理” をクリックします。
1-3. “Web アプリケーションの作成または拡張” をクリックします。
1-4. "既存の Web アプリケーションの拡張” をクリックし、search.com(例) を指定し、”新しい IIS Web サイトを作成する” を有効にします。
1-5. ポートを 443 に指定します。
1-6. 任意のホストヘッダーを指定します。
1-7. NTLM 認証に設定します。

2. IIS の管理コンソールから以下の設定を実施します。
2-1. 1.で作成された Web サイトのプロパティを開きます。
2-2. “ディレクトリ セキュリティ” タブを選択し、証明書をインポートします。
2-3. “Web サイト” タブの “詳細設定” をクリックし、80 の IP ヘッダーに ローカルIP アドレス(WSSWebサーバー)を指定します。

3. Web アプリケーションを拡張します。
3-1. “SharePoint 3.0 全体管理” にアクセスします。
3-2. “アプリケーションの構成の管理” をクリックします。
3-3. “Web アプリケーションの作成または拡張” をクリックします。
3-4. “既存の Web アプリケーションの拡張”  をクリックします。
3-5. 1. で使用した Web アプリケーションを指定して、”新しい IIS Web サイトを作成する” を有効にします。
3-7. NTLM 認証に設定します。
3-8. 任意のホストヘッダーを指定します。

4. 3. で作成した Web サイトを IIS 側で設定変更します。
4-1. 3.で作成された Web サイトのプロパティを開きます。
4-2. “Web サイト” タブの “詳細設定” をクリックし、80 の IP ヘッダーに 2. で指定した IP アドレスとは別の IP アドレス(インターネット用)を指定します。

5. WSS のサイトを作成します。
6. 3. で作成された Web サイトの “認証プロバイダ” を “基本認証” に設定します。

この手順でWebサーバー上には、ユーザーアクセス用の基本認証のサイトと、mssearch.exe 統合Windows認証のサイトが作成されます。

そして、最後に重要な点として、WSSのWebサーバー上にHostsファイルを使用してWSSのユーザーサイトのホスト名=ローカルIP(Webサーバー)を指定する必要があります。

これは、mssearch.exe がWSSのWebサーバー上で稼働する為、コンテンツ参照時には上記で使用したWebサーバーのローカルIPアドレスのサイト=統合Windows認証サイトにアクセスさせるためです。

WSSのユーザーは通常のDNSを利用してインターネットに公開されたサイト=基本認証サイト、にアクセスします。

Hostファイルを使用しる方法とは別に、mssearch.exe 専用のDNSサーバーを使用するといった大がかりな方法も可能です。

以上の方法により、インターネットに公開したWSS3.0において検索が可能となりました


コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/91-252930ea
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad