[ 
https://issues.apache.org/jira/browse/SOLR-1394?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anders Melchiorsen updated SOLR-1394:
-------------------------------------

    Description: 
The Solr HTML stripper is replacing any removed HTML with whitespace. This is 
to keep offsets correct for highlighting.

However, as was already pointed out in SOLR-42, this means that any token 
containing an HTML entity will be split into several tokens. That makes the 
HTML stripper completely unreliable for international text (and any text is 
potentially interantional).

The current code is actually deficient for BOTH highlighting and indexing, 
where the previous incarnation (that did not insert spaces) only had problems 
with highlighting.

The only workaround is to not use entities at all, which is impossible in some 
situations and inconvenient in most situations. If the client is required to 
transform entities before handing it to Solr, it might as well be required to 
also strip tags, and then the HTML stripper would not be needed at all.

Today, we have a better solution that can be used: offset correction. We can 
then avoid inserting extra whitespace, but still get correct offsets. The 
attached patch implements just that.


  was:
I am having problems with the Solr HTML stripper.

After some investigation, I have found the cause to be that the
stripper is replacing the removed HTML with spaces. This obviously
breaks when the HTML is in the middle of a word, like "Günther".

So, without knowing what I was doing, I hacked together a fix that
uses offset correction instead.

That seemed to work, except that closing tags and attributes still
broke the positioning. With even less of a clue, I replaced read()
with next() in the two methods handling those.

Finally, invalid HTML also gave wrong offsets, and I fixed that by
restoring numRead when rolling back the input stream.

At this point I stopped trying to break it, so there may still be more
problems. Or I might have introduced some problem on my own. Anyway, I
have put the three patches at the bottom of this mail, in case
somebody wants to move along with this issue.



Clarifying the description, the original report was just a pasted e-mail.


> HTML stripper is splitting tokens
> ---------------------------------
>
>                 Key: SOLR-1394
>                 URL: https://issues.apache.org/jira/browse/SOLR-1394
>             Project: Solr
>          Issue Type: Bug
>          Components: Analysis
>    Affects Versions: 1.4
>            Reporter: Anders Melchiorsen
>         Attachments: SOLR-1394.patch, SOLR-1394.patch
>
>
> The Solr HTML stripper is replacing any removed HTML with whitespace. This is 
> to keep offsets correct for highlighting.
> However, as was already pointed out in SOLR-42, this means that any token 
> containing an HTML entity will be split into several tokens. That makes the 
> HTML stripper completely unreliable for international text (and any text is 
> potentially interantional).
> The current code is actually deficient for BOTH highlighting and indexing, 
> where the previous incarnation (that did not insert spaces) only had problems 
> with highlighting.
> The only workaround is to not use entities at all, which is impossible in 
> some situations and inconvenient in most situations. If the client is 
> required to transform entities before handing it to Solr, it might as well be 
> required to also strip tags, and then the HTML stripper would not be needed 
> at all.
> Today, we have a better solution that can be used: offset correction. We can 
> then avoid inserting extra whitespace, but still get correct offsets. The 
> attached patch implements just that.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to