クロール ログの出力方法

こんにちは。

SharePoint サポートチームのくらたです。

今回は「クロール ログの出力方法」についての紹介したいと思います。お客様から「クロール ログは画面で見ることは出来るが、ファイルなどに一覧で出力することが出来ないんですか?」とご質問を頂くことがあります。

クロール ログとは以下のようにクロールの結果を記載したログになりますが、MOSS 2007 では、UI 上からは確認出来るものの、ファイルなどにエクスポートする機能は搭載しておりません。そこで、今回は SQL サーバー データベース内のテーブルから、クロールログと同様の内容を確認するという代替案についてご説明いたします。(SQL サーバーだとテーブルの内容はファイルに出力できますよね。)

clip_image002

では、クロール ログの内容を把握するために、具体的に SQL サーバーのどのテーブルを参照すれば良いのかを見ていきましょう。

クロールの状況は、検索データベース (既定では SharedService1_Search_DB) の以下の 2 つのテーブルを参照することにより、確認できます。

1) MSSCrawlURL テーブル

クロール ログと同等の情報が記録されています。

2) MSSCrawlHistory テーブル

クロール 履歴の情報が記録されています。

テーブルの詳細は以下になります。

1) MSSCrawlURL テーブル

MSSCrawlURL テーブルには、とても多くの列が存在しますが、具体的に参照して頂きたい列は限られてます。くらたの経験上、以下の4 つの列を参照して頂ければ概ねクロール ログと同様の状況を把握することが可能です。

列名

内容

DisplayURL

アイテムの URLを表します。

ErrorID

エラー内容の詳細を表します。エラー メッセージの詳細は、MSSCrawlErrorList テーブルに記載されています。

ErrorLevel

エラーの種類を表します。 ErrorLevel = 0 の場合 : 成功 ErrorLevel = 1 の場合 : 警告 ErrorLevel = 2 の場合 : エラー

LastTouchStart

クロールした時刻を表します。

例えば、クロールが警告になった URL を確認する場合は、以下の SQL 文を実行します。

SELECT [DisplayURL],[ErrorID],[ErrorLevel],[LastTouchStart]

  FROM [< 検索データベース名>].[dbo].[MSSCrawlURL] where ErrorLevel = 1

くらたの検証環境で確認したところ、以下のような結果が返ってきました。

clip_image004

上記より、https://kokurata165324x/searchcenter が、警告 (ErrorID = 4) により失敗していることが確認出来ます。

エラー内容の詳細は、MSSCrawlErrorList テーブルから確認することが出来、具体的には以下のような SQL 文を実行することで、確認することが可能です。

SELECT *

  FROM [< 検索データベース名>].[dbo].[MSSCrawlErrorList] where ErrorID = <ErrorID>

では、実際に実行してみましょう。

clip_image006

上記のように、ErrorID = 4 は、“この URL のコンテンツはインデックス付けしない属性を持つため、サーバーによって除外されています。” という警告メッセージであることが確認できます。

実際のクロール ログを見てもやはり警告が出ていました。。。

clip_image008

今回はエラーについての切り分けが目的ではないので、エラー内容についてはふれませんが、このようにしてクロールログの内容を SQL データベースから確認することが可能です。

なお、上記の SQL を別々に実行するのも大変ですので、以下の SQL 文を使用し、INNER JOIN で MSSCrawlErrorList テーブルと MSSCrawlURL テーブルと連結して、表示させるとより便利ですね。

SELECT MSSCrawlURL.DisplayURL, MSSCrawlURL.ErrorID, MSSCrawlURL.ErrorLevel, MSSCrawlURL.LastTouchStart,MSSCrawlErrorList.ErrorMsg

FROM [< 検索データベース名>].[dbo].[MSSCrawlErrorList]

  INNER JOIN [< 検索データベース名>].[dbo].[MSSCrawlURL]

   ON MSSCrawlErrorList.ErrorID = MSSCrawlURL.ErrorID

    Where MSSCrawlErrorList.ErrorLevel = <ErrorLevel>

実際に実行し、警告のクロール (ErrorLevel = 1) を表示させてみると、以下のようになります。

clip_image010

2) MSSCrawlHistory テーブル

MSSCrawlHistory テーブルを参照することにより、クロール履歴を確認することが可能です。詳細なクロール履歴は、UI 上から把握することは出来ないため、SQL データベースを参照することは非常に有効な手段になります。

MSSCrawlHistory テーブルには、以下の列が存在します。

説明

内容

CrawlID

クロールごとに内部的保持する一意の識別子を表します。

ProjectID

プロジェクトの種類を表します。 ProjectID = 1 の場合 : Portal Content (コンテンツのクロール) ProjectID = 2 の場合 : Anchor Project (リンク関連の処理)

CrawlType

クロールの種類を表します。 CrawlType = 1 の場合 : フル クロール CrawlType = 2 の場合 : 増分 クロール CrawlType = 6 の場合 : 削除 クロール ※後述の「削除クロールって何? 」をご参照ください。

RequestTime

リクエスト時刻

Status

現在の状態を表します。 Status = 1 の場合 : 初期化 Status = 2 の場合 : 開始アドレスが初期化されています Status = 4 の場合 : 開始 Status = 5 の場合 : エラー Status = 11 の場合 : 完了 Status = 9 の場合 : 一時停止 Status = 12 の場合 : 停止

StartTime

開始時刻

EndTime

終了時刻

SuccessCount

成功したアイテム数

ErrorCount

エラーになったアイテム数

WarningCount

警告になったアイテム数

実際に以下の SQL 文により、MSSCrawlHistory テーブルの中身を参照してみましょう。

clip_image012

上記のように、MSSCrawlHistory テーブルを参照することにより、クロール 履歴を参照できます。

削除クロールって何?

----------------------

削除クロールとは、以下の状況などに実行される処理のことです。

  - コンテンツ ソースを削除した場合

  - コンテンツ ソースの開始アドレスが削除された場合

くらたの検証環境で、具体的に以下のように、開始アドレスを削除してみると・・・。

clip_image014

https://kokurata165324x/ を削除

clip_image016

clip_image018

削除クロールが実行されたことが確認できます。

clip_image020

さらに、クロール ログには以下のように記載されています。

clip_image022

今回は、検索データベースに保存されたクロール結果の情報について解説いたしましたが、いかがでしょうか。SQL サーバーを直接確認する以外にも、Visual Studio 等を使用したプログラムを開発することで、クロールログを取得することが可能です。プログラムの開発については、割愛しますがクロールログが出力可能なツール (Search Crawl Log Viewer) が以下に公開されておりますのでご紹介します。本ツールはサンプルコードも公開されておりますので、プログラムを開発される上でご参照ください。

Creating an Enterprise Search Crawl Log Viewer for SharePoint Server 2007
https://msdn.microsoft.com/en-us/library/cc751807.aspx

また、以下のサイトから Search Crawl Log Viewer のサンプル コードをダウンロードできます。
https://code.msdn.microsoft.com/crawllogviewersample

なお、上述に紹介しましたデータベースのテーブルは、以下の技術情報などで公開されておりますので、ぜひご参照ください。

[MS-SRCHTP]: Search Topology Protocol Specification

https://msdn.microsoft.com/en-us/library/dd948668.aspx

[MS-SQLPADM]: SQL Administration Protocol Specification

https://msdn.microsoft.com/en-us/library/cc313130.aspx