Steve Rowe created SOLR-7027:
--------------------------------

             Summary: ExtractingRequestHandler indiscriminantly dumps all 
source HTML attributes into the catch-all field when captureAttr=false, but it 
should be more selective, something like only href, title, alt, etc. attributes
                 Key: SOLR-7027
                 URL: https://issues.apache.org/jira/browse/SOLR-7027
             Project: Solr
          Issue Type: Improvement
          Components: contrib - Solr Cell (Tika extraction)
            Reporter: Steve Rowe
            Priority: Minor


On line 283 in {{SolrContentHandler}}, the catch-all field gets *all* source 
HTML attribute values dumped into it:

{code:java}
270:  @Override
271:  public void startElement(String uri, String localName, String qName, 
Attributes attributes) throws SAXException {
272:    StringBuilder theBldr = fieldBuilders.get(localName);
273:    if (theBldr != null) {
274:      //we need to switch the currentBuilder
275:      bldrStack.add(theBldr);
276:    }
277:    if (captureAttribs == true) {
278:      for (int i = 0; i < attributes.getLength(); i++) {
279:        addField(localName, attributes.getValue(i), null);
280:      }
281:    } else {
282:      for (int i = 0; i < attributes.getLength(); i++) {
283:        bldrStack.getLast().append(' ').append(attributes.getValue(i));
284:      }
285:    }
286:    bldrStack.getLast().append(' ');
287:  }
{code}

But this will contains lots of unwanted cruft: {{class}} and {{style}} tags, 
etc.

It would be much better if only attribute values containing addresses or 
tooltip text, etc. were dumped into the catch-all field.  Here are a couple of 
places where this kind of attribute are described:

http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/TextExtractor.html#includeAttribute(net.htmlparser.jericho.StartTag,%20net.htmlparser.jericho.Attribute)

>From Tika's {{HtmlHandler}} class:

{code:java}
    // List of attributes that need to be resolved.
    private static final Set<String> URI_ATTRIBUTES =
        new HashSet<String>(Arrays.asList("src", "href", "longdesc", "cite"));
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to