[
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 <[email protected]>
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("“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}“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: [email protected]
For additional commands, e-mail: [email protected]