Quantcast

[jira] [Commented] (LUCENE-7795) WordDelimiterFilter produces invalid offsets in single word case

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[jira] [Commented] (LUCENE-7795) WordDelimiterFilter produces invalid offsets in single word case

JIRA jira@apache.org

    [ https://issues.apache.org/jira/browse/LUCENE-7795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15977585#comment-15977585 ]

ASF GitHub Bot commented on LUCENE-7795:
----------------------------------------

GitHub user michaelbraun opened a pull request:

    https://github.com/apache/lucene-solr/pull/194

    LUCENE-7795 - illegal offsets in WordDelimiterFilter should prevent advancing start offset

   

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/michaelbraun/lucene-solr lucene-7795

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/lucene-solr/pull/194.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #194
   
----
commit 4461cbd92769700126bab45c0ce583459d2fb8b7
Author: Michael Braun <[hidden email]>
Date:   2017-04-20T21:35:02Z

    LUCENE-7795 - illegal offsets in WordDelimiterFilter should prevent advancing start offset

----


> WordDelimiterFilter produces invalid offsets in single word case
> ----------------------------------------------------------------
>
>                 Key: LUCENE-7795
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7795
>             Project: Lucene - Core
>          Issue Type: Bug
>    Affects Versions: master (7.0), 6.5
>            Reporter: Michael Braun
>
> This problem is not present in WordDelimiterGraphFilter, but it is present in WordDelimiterFilter's interaction with HTMLStripCharFilter.
> Test code:
> {code}
> public class TestTokenizationIssue2 {
>     public static void main(String... args) throws IOException {
>         HTMLStripCharFilter charFilter = new HTMLStripCharFilter(getText());
>         WhitespaceTokenizer whitespaceTokenizer = new WhitespaceTokenizer();
>         whitespaceTokenizer.setReader(charFilter);
>        // WordDelimiterGraphFilter wdgf = new WordDelimiterGraphFilter(whitespaceTokenizer,
>         //       WordDelimiterGraphFilter.GENERATE_WORD_PARTS, CharArraySet.EMPTY_SET);
>         WordDelimiterFilter wdgf = new WordDelimiterFilter(whitespaceTokenizer,
>                WordDelimiterFilter.GENERATE_WORD_PARTS, CharArraySet.EMPTY_SET);
>         wdgf.reset();
>         while (wdgf.incrementToken()) {
>             CharTermAttribute charTermAttribute = wdgf.getAttribute(CharTermAttribute.class);
>             OffsetAttribute offsetAttribute = wdgf.getAttribute(OffsetAttribute.class);
>             System.out.println(charTermAttribute.toString() + " - " + offsetAttribute.startOffset() + ',' + offsetAttribute.endOffset());
>         }
>     }
>     private static Reader getText() {
>         return new StringReader("&#x93;Risk");
>     }
> }
> {code}
> The offsets produced by the WordDelimiterFilter are 1,10. With WordDelimiterGraphFilter the offsets produced are 0,10. It should be 0,10 as this is the original text:    {noformat}&#x93;Risk{noformat}   - and 1 is between the ampersand and hash.
> Inside WordDelimiterFilter, I believe the conditional branch from "if (isSingleWord && startOffset <= savedEndOffset) "   is invalid and it should always use the saved start and end offsets because it can't make the assertion that the iterator's current and end are reliable markers.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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

Loading...