You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@nutch.apache.org by kaveh minooie <ka...@plutoz.com> on 2012/02/22 01:48:41 UTC

I think I found a bug --> multiple_values_encountered_for_non_multiValued_field_title

so I've been getting this error 
"multiple_values_encountered_for_non_multiValued_field_title" every once 
in a while when I am trying to run solrindex. I can now say that this is 
being caused by index-more plug in (MoreIndexingFilter.java)

private NutchDocument resetTitle(NutchDocument doc, ParseData data, 
String url) {
	    String contentDisposition = data.getMeta(Metadata.CONTENT_DISPOSITION);
	    if (contentDisposition == null)
	      return doc;
	
	    for (int i=0; i<patterns.length; i++) {
	      Matcher matcher = patterns[i].matcher(contentDisposition);
	      if (matcher.find()) {
	        doc.add("title", matcher.group(1));
	        break;
	      }
	    }
	   return doc;
	  }


the problem here is that in my case this function is not reseting but it 
is just adding a new title. it seems that the original idea was that if 
CONTENT_DISPOSITION exist then the document will not have a title set 
from other plug ins (namely index-basic). unfortunately this seems not 
to be always the case as you can see by running this command:

bin/nutch indexchecker http://www.2modern.com/site/gift-registry.html

what i do get (the part that is relevant) is:

	
tstamp :	Tue Feb 21 13:18:13 PST 2012
type :	text/html
type :	text
type :	html
date :	Tue Feb 21 13:18:13 PST 2012
url :	http://www.2modern.com/site/gift-registry.html
content :	2Modern Gift Registry      Modern Furniture & Lighting items 
in cart 0 checkout Returning 2Modern cu
user_ranking :	25.0
title :	2Modern Gift Registry
title :	gift-registry.html
plutoz_ranking :	10.0
categories :	Furniture Home
contentLength :	12924

and as you can see there are 2 titles. I think it would be very easy to 
fix that. just check to see if a title exist already before setting the 
name of the file as title:

if (contentDisposition == null || null != doc.getField("title"))
	      return doc;


  or if the substitution must happen in presence of CONTENT_DISPOSITION, 
at least remove the old one:

if (matcher.find()) {
         doc.remove("title");
	doc.add("title", matcher.group(1));
         break;
  }


  now that being said, the real problem here is why NutchDocument 
doesn't observe the schema.xml file and alway assumes that all fields 
are multi value?

public void add(String name, Object value) {
53	    NutchField field = fields.get(name);
54	    if (field == null) {
55	      field = new NutchField(value);
56	      fields.put(name, field);
57	    } else {
58	----> field.add(value);  <---
59	    }
60	  }

-- 
Kaveh Minooie

www.plutoz.com

Re: I think I found a bug --> multiple_values_encountered_for_non_multiValued_field_title

Posted by Lewis John Mcgibbney <le...@gmail.com>.
Hi Kaveh,

Based on the example you provide there is no doubt that there needs to be
something done here to address multivalued titles, I think that the small
patch you provide addresses this.



On Wed, Feb 22, 2012 at 12:48 AM, kaveh minooie <ka...@plutoz.com> wrote:

>
>
>  now that being said, the real problem here is why NutchDocument doesn't
> observe the schema.xml file and alway assumes that all fields are multi
> value?
>

I would like to hear from guys more experienced with schema semantics, how
a multiValued field option for _every_ field would affect desired indexing
and subsequently searching within Solr! I am sorry, but admit that I don't
know enough about this particular element to comment in any more detail.

Lewis