KOMINE Masako
Komin****@mss*****
2012年 4月 23日 (月) 18:19:07 JST
小峯です。 jp.sf.fess, org.seasar.robot, org.seasar.robot.dbflute, jp.sf.fess.solr, org.apache.commons.httpclient のログレベルを "debug" にしてクロールを実行しました。 なかなかまとまらない質問で申し訳ないのですが アドバイスいただければ幸いです。 やったことの内容は以下の通りです。 1. ログレベルを変更してクロールを実行。 2. MIME TYPEが "text/html" と判断されるページと "text/plain" と判断されるページがあった。 3. 上記2の理由のため、s2robot_rule.diconの "webHtmlRule" のルールに "text/plain" を追加した。 4. 再びクロールを実行。 4. のログから (1) MIME TYPEが "text/html" と判断される場合と "text/plain" と判断される場合がある ※ 同じURLでも"text/html"となる場合と"text/plain"となる場合があります ※ ブラウザからアクセスすると content-type は "text/html" です (2) ルールが "webHtmlRule" であっても子のURLがクロールされない (1) について 以下は4のページクロール後の "insert into ACCESS_RESULT" 時のログです (URLは書き換えてあります)。 ・MIME TYPE text/plain [Robot-20120420141512-1-2] DEBUG org.seasar.robot.dbflute.XLog - /============================================================================= [Robot-20120420141512-1-2] DEBUG org.seasar.robot.dbflute.XLog - AccessResultBhv.insert() [Robot-20120420141512-1-2] DEBUG org.seasar.robot.dbflute.XLog - =======================/ [Robot-20120420141512-1-2] DEBUG org.seasar.robot.dbflute.XLog - DBDataServiceImpl.store():63 -> ... [Robot-20120420141512-1-2] DEBUG org.seasar.robot.dbflute.QLog - insert into ACCESS_RESULT (SESSION_ID, RULE_ID, URL, PARENT_URL, STATUS, HTTP_STATUS_CODE, METHOD, MIME_TYPE, CONTENT_LENGTH, EXECUTION_TIME, LAST_MODIFIED, CREATE_TIME) values ('20120420141512-1', 'webHtmlRule', '【コンテキストURL】/xxxx/xxxxx/xxx/j', '【コンテキストURL】/xml /sitemap.ja.xml', 0, 200, 'GET', 'text/plain', 41784, 5090, '2012-04-20 14:15:54.502', '2012-04-20 14:15:54.614') ・MIME TYPE text/html [Robot-20120420141512-1-1] DEBUG org.seasar.robot.dbflute.XLog - /============================================================================= [Robot-20120420141512-1-1] DEBUG org.seasar.robot.dbflute.XLog - AccessResultBhv.insert() [Robot-20120420141512-1-1] DEBUG org.seasar.robot.dbflute.XLog - =======================/ [Robot-20120420141512-1-1] DEBUG org.seasar.robot.dbflute.XLog - DBDataServiceImpl.store():63 -> ... [Robot-20120420141512-1-1] DEBUG org.seasar.robot.dbflute.QLog - insert into ACCESS_RESULT (SESSION_ID, RULE_ID, URL, PARENT_URL, STATUS, HTTP_STATUS_CODE, METHOD, MIME_TYPE, CONTENT_LENGTH, EXECUTION_TIME, LAST_MODIFIED, CREATE_TIME) values ('20120420141512-1', 'webHtmlRule', '【コンテキストURL】/xxxxxx/xxxxxxxxxx/xxxxxxxxxxxx/j', '【コンテキストURL】 /xml/sitemap.ja.xml', 0, 200, 'GET', 'text/html', 31813, 97, '2012-04-20 14:15:49.657', '2012-04-20 14:15:50.156') また、ブラウザからアクセスした場合のレスポンス/リクエストヘッダ は以下のようになります。 ・レスポンスヘッダソース Connection Keep-Alive Content-Language ja Content-Type text/html;charset=UTF-8 Date Fri, 20 Apr 2012 07:00:49 GMT Keep-Alive timeout=15, max=100 Retry-After Sun, 14 Jun 2009 6:00:00 GMT Transfer-Encoding chunked ・リクエストヘッダソース Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language ja,en;q=0.7,en-us;q=0.3 Connection keep-alive Cookie 【省略】 Host 【ホスト】 User-Agent Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko/20100101 Firefox/11.0 (2) について 以下のような"add child" というログがあるので子URLのリストは作成されているようなのですが [Robot-20120420141512-1-1] DEBUG org.seasar.robot.client.http.HcHttpClient - Accessing 【URL】 [Robot-20120420141512-1-1] DEBUG org.seasar.robot.client.http.HcHttpClient - 【ホスト】/robots.txt is already visited. [Robot-20120420141512-1-1] DEBUG org.seasar.robot.helper.impl.LogHelperImpl - Processing the response. Http Status: 200, Exec Time: 97 [Robot-20120420141512-1-1] DEBUG org.seasar.robot.transformer.impl.HtmlTransformer - Base URL: 【URL】 [Robot-20120420141512-1-1] DEBUG jp.sf.fess.transformer.FessXpathTransformer - 【ホスト名なしの子URL】 -> 【子URL】 [Robot-20120420141512-1-1] DEBUG jp.sf.fess.transformer.FessXpathTransformer - Add Child: 【子URL】 ・MIME TYPE が "text/html" の場合 "add child" された子URLに対して UrlQueueBhr, AccessResultBhvのselectCount()のあとに UrlQueueBhv.batchInsert()が行われますが、このURLに対して クロールが実行されません。 ・MIME TYPE が "text/plain" の場合 "add child" された子URLに対して UrlQueueBhv.batchInsert()が行われず、クロールも行われません。 以上の内容から設定の間違いや、ここを確認した方が良いといった ことはありますでしょうか (クロール対象のwebアプリケーションはリバースプロキシ下で動いているのですが、 同じアプリケーションをリバースプロキシなしの別の サーバで動作させた場合は、(URL以外)同じウェブクロールの設定で 正常にクロールできるので、ウェブクロールの設定には問題ないと 思うのですが)。 また、Transfer-Encoding が chunked だと問題があったりするでしょうか。 よろしくお願いいたします。 --- ■ 設定、環境など ウェブクロールの設定は次の通りです ・URL: 【コンテキストURL】/xml/sitemap.ja.xml ・クロール対象とするURL: 【コンテキストURL】/.* ・クロール対象から除外するURL: .*\.png$ .*/png$ .*/gif$ .*\.gif$ .*\.jpg$ .*/jpg$ .*/e$ .*/e/$ ・深さ: 5 Fessの実行環境は以下の通りです。 OS: Red Hat Enterprise Linux6.2 Tomcat: 7.0.23 Fess: 5.0.1 クロール対象のWebアプリケーションは apache+tomcatで動作しており、さらにリバースプロキシ下にあります --- (2012/04/17 11:23), KOMINE Masako wrote: > 小峯です。 > > ご回答ありがとうございます。 > 今すぐ確認できる環境にないのですが、 > 次の機会にやってみようと思います。 > > >> 菅谷です。 >> >> http://fess.sourceforge.jp/ja/6.0/config/logging.html >> >> ログレベルを debug などで確認するのが良いと思います。 >> org.apache.http 以下あたりを debug にすると >> HttpClient 関連のやり取りが確認できると思います。 >> >> よろしくお願いいたします。 >> >> shinsuke >> >> >> 2012年4月16日17:09 KOMINE Masako<Komin****@mss*****>: >>> はじめまして。小峯と申します。 >>> >>> サイトマップを使用して、サイトをクロールさせようとしているのですが、 >>> クロールはされるものの、webページとしてではなく、 >>> 何かのファイルとして処理されてしまいます。 >>> >>> そのページに含まれるリンク先にクロールに行かず、 >>> 検索結果で表示されるコンテンツタイトルに >>> URLの最後の部分が表示されるため、そう判断しました。 >>> また、このサイトには静的なページと動的に作成されるページとがあって >>> 静的なページをサイトマップを使用せずにクロールさせると、 >>> こちらはhtmlとして処理されます。 >>> どちらの場合も「ウェブクロールの設定」で「深さ」は5に設定していました。 >>> >>> クロール対象のページのURLは"http:"で始まり、 >>> wgetコマンドでアクセスすると、 >>> "Content-Type: text/html;charset=UTF-8" >>> で応答があるため、s2robot_rule.diconのデフォルトの設定で >>> htmlとして処理されそうな気がします。 >>> >>> fess_crawler.outを見てもエラーらしき出力は見つけられません。 >>> >>> どのような原因が考えられるか、お心当たりがありましたら >>> お教え願えるでしょうか。 >>> >>> よろしくお願いいたします。 >>> >>> _______________________________________________ >>> Fess-user mailing list >>> Fess-****@lists***** >>> http://lists.sourceforge.jp/mailman/listinfo/fess-user > > _______________________________________________ > Fess-user mailing list > Fess-****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/fess-user > > -- 小峯 政子 (KOMINE Masako) 三菱スペース・ソフトウエア(株) 第四技術部 第三グループ e-mail: Komin****@mss***** tel: 029-859-0312 / fax: 029-859-0322