You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "DM Smith (JIRA)" <ji...@apache.org> on 2008/08/05 17:18:46 UTC
[jira] Commented: (LUCENE-1350) SnowballFilter resets the payload
[ https://issues.apache.org/jira/browse/LUCENE-1350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12619925#action_12619925 ]
DM Smith commented on LUCENE-1350:
----------------------------------
When we go to the reuse pattern across all of Lucene, the problem will be nearly everywhere.
The pattern for Token after deprecations is removed is:
public Token next(Token token) {
...
token.clear(); // This clears Payload
token.setTermBuffer(newBuffer);
...
}
In https://issues.apache.org/jira/browse/LUCENE-1333, I've changed snowballs next(Token token) to be this pattern.
Using clone is probably not the best.
The following pattern works:
public Token next(Token token) {
...
Payload payload = token.getPayload();
token.clear(); // This clears Payload
token.setTermBuffer(newBuffer);
token.setPayload(payload);
...
}
If payload is to be preserved in the face of the reuse pattern, perhaps clear() should not clear Payload. Since Payload is experimental and marked as subject to change, I don't think that this break of backward compatibility should be an issue. If it is, I think there is a better pattern for Token.
The filter order issue concerning payload also pertains to the flags field, which is also marked experimental, and I also think it pertains to type.
The most typical pattern of Token reuse is:
token.clear(); // reset everything except startOffset, endOffset and type to their defaults.
token.setStartOffset(newStartOffset);
token.setEndOffset(newEndOffset);
token.setType(Token.DEFAULT_TYPE);
token.setTermBuffer(newTerm); // or some variation of this.
This is rather tedious and I think clear is a bit to agressive with setting payload and flags to their default. I think it would be good to add to Token the following and deprecate clear():
public void reuse(char[] buffer, int offset, int length, int startOffset, int endOffset, String type)
{
setTermBuffer(buffer, offset, length);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
this.type = type;
}
public void reuse(String buffer, int offset, int length, int startOffset, int endOffset, String type)
{
setTermBuffer(buffer, offset, length);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
this.type = type;
}
public void reuse(String buffer, int startOffset, int endOffset, String type)
{
setTermBuffer(buffer);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
this.type = type;
}
public void reuse(char[] buffer, int offset, int length, int startOffset, int endOffset)
{
setTermBuffer(buffer, offset, length);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
}
public void reuse(String buffer, int offset, int length, int startOffset, int endOffset)
{
setTermBuffer(buffer, offset, length);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
}
public void reuse(String buffer, int startOffset, int endOffset)
{
setTermBuffer(buffer);
this.positionIncrement = 1;
this.startOffset = startOffset;
this.endOffset = endOffset;
}
> SnowballFilter resets the payload
> ---------------------------------
>
> Key: LUCENE-1350
> URL: https://issues.apache.org/jira/browse/LUCENE-1350
> Project: Lucene - Java
> Issue Type: Bug
> Components: Analysis, contrib/*
> Reporter: Doron Cohen
> Assignee: Doron Cohen
> Attachments: LUCENE-1350.patch
>
>
> Passing tokens with payloads through SnowballFilter results in tokens with no payloads.
> A workaround for this is to apply stemming first and only then run whatever logic creates the payload, but this is not always convenient.
> Patch to follow that preserves the payload.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org