Index: src/java/org/apache/nutch/indexer/IndexingFiltersChecker.java
===================================================================
--- src/java/org/apache/nutch/indexer/IndexingFiltersChecker.java	(revision 1635093)
+++ src/java/org/apache/nutch/indexer/IndexingFiltersChecker.java	(working copy)
@@ -17,7 +17,9 @@
  
 package org.apache.nutch.indexer;
 
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.conf.Configured;
@@ -133,6 +135,18 @@
 
     Inlinks inlinks = null;
     Parse parse = parseResult.get(urlText);
+    if (parse == null) {
+      LOG.error("Failed to get parse from parse result");
+      LOG.error("Available parses in parse result (by URL key):");
+      Iterator<Map.Entry<Text, Parse>> piter = parseResult.iterator();
+      while (piter.hasNext()) {
+        Map.Entry<Text, Parse> pentry = piter.next();
+        LOG.error("  " + pentry.getKey());
+      }
+      LOG.error("Parse result does not contain a parse for URL to be checked:");
+      LOG.error("  " + urlText);
+      return -1;
+    }
 
     byte[] signature = SignatureFactory.getSignature(conf).calculate(content,
         parse);
Index: src/java/org/apache/nutch/parse/ParserChecker.java
===================================================================
--- src/java/org/apache/nutch/parse/ParserChecker.java	(revision 1635093)
+++ src/java/org/apache/nutch/parse/ParserChecker.java	(working copy)
@@ -19,11 +19,13 @@
 
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.io.Text;
+import org.apache.hadoop.util.StringUtils;
 import org.apache.hadoop.util.Tool;
 import org.apache.hadoop.util.ToolRunner;
 import org.apache.nutch.crawl.CrawlDatum;
@@ -164,7 +166,8 @@
       scfilters.passScoreBeforeParsing(turl, cd, content);
     } catch (Exception e) {
       if (LOG.isWarnEnabled()) {
-        LOG.warn("Couldn't pass score, url " + turl.toString() + " (" + e + ")");
+        LOG.warn("Couldn't pass score before parsing, url " + turl + " (" + e + ")");
+        LOG.warn(StringUtils.stringifyException(e));
       }
     }    
     
@@ -171,7 +174,7 @@
     ParseResult parseResult = new ParseUtil(conf).parse(content);
 
     if (parseResult == null) {
-      LOG.error("Problem with parse - check log");
+      LOG.error("Parsing content failed!");
       return (-1);
     }
 
@@ -184,17 +187,32 @@
       LOG.info("signature: " + StringUtil.toHexString(signature));
     }
 
+    Parse parse = parseResult.get(turl);
+    if (parse == null) {
+      LOG.error("Failed to get parse from parse result");
+      LOG.error("Available parses in parse result (by URL key):");
+      Iterator<Map.Entry<Text, Parse>> piter = parseResult.iterator();
+      while (piter.hasNext()) {
+        Map.Entry<Text, Parse> pentry = piter.next();
+        LOG.error("  " + pentry.getKey());
+      }
+      LOG.error("Parse result does not contain a parse for URL to be checked:");
+      LOG.error("  " + turl);
+      return -1;
+    }
+    
     // call the scoring filters
     try {
-      scfilters.passScoreAfterParsing(turl, content, parseResult.get(turl));
+      scfilters.passScoreAfterParsing(turl, content, parse);
     } catch (Exception e) {
       if (LOG.isWarnEnabled()) {
-        LOG.warn("Couldn't pass score, url " + turl + " (" + e + ")");
+        LOG.warn("Couldn't pass score after parsing, url " + turl + " (" + e + ")");
+        LOG.warn(StringUtils.stringifyException(e));
       }
     }
 
-    for (java.util.Map.Entry<Text, Parse> entry : parseResult) {
-      Parse parse = entry.getValue();
+    for (Map.Entry<Text, Parse> entry : parseResult) {
+      parse = entry.getValue();
       LOG.info("---------\nUrl\n---------------\n");
       System.out.print(entry.getKey());
       LOG.info("\n---------\nParseData\n---------\n");

