[ 
https://issues.apache.org/jira/browse/LUCENENET-54?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12868685#action_12868685
 ] 

Jason Fitzharris commented on LUCENENET-54:
-------------------------------------------

I encountered the same issue when using the Finnish stemmer. The problem is 
similar to LUCENENET-102 as Java and .NET defines string.substring differently. 
Java uses

                        string.substring(firstIndex, lastIndex)

whereas .NET uses

                        string.Substring(startIndex, length)

The solution is to change the line 467 in Snowballprogram.slice_to from

                        s.Append(current.ToString(bra, ket));

to

                        s.Append(current.ToString(bra, len));

len is an existing but unused variable which is declared as

                        int len = ket - bra;


> ArgumentOurOfRangeException caused by SF.Snowball.Ext.DanishStemmer
> -------------------------------------------------------------------
>
>                 Key: LUCENENET-54
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-54
>             Project: Lucene.Net
>          Issue Type: Bug
>         Environment: Windows XP SP2, lucene.net v2.0 004
>            Reporter: Torsten Rendelmann
>            Assignee: George Aroush
>            Priority: Critical
>
> Exception Information
> System.SystemException: System.Reflection.TargetInvocationException: 
> Exception has been thrown by the target of an invocation. ---> 
> System.ArgumentOutOfRangeException: Index and length must refer to a location 
> within the string.
> Parameter name: length
>    at System.String.Substring(Int32 startIndex, Int32 length)
>    at System.Text.StringBuilder.ToString(Int32 startIndex, Int32 length)
>    at SF.Snowball.SnowballProgram.slice_to(StringBuilder s)
>    at SF.Snowball.Ext.DanishStemmer.r_undouble()
>    at SF.Snowball.Ext.DanishStemmer.Stem()
>    --- End of inner exception stack trace ---
>    at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, 
> BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo 
> culture, Boolean isBinderDefault, Assembly caller, Boolean verifyAccess)
>    at System.Reflection.RuntimeMethodInfo.InternalInvoke(Object obj, 
> BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo 
> culture, Boolean verifyAccess)
>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags 
> invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
>    at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
>    at System.Reflection.MethodInfo.Invoke(Object obj, Object[] parameters)
>    at Lucene.Net.Analysis.Snowball.SnowballFilter.Next()
>    at Lucene.Net.Analysis.Snowball.SnowballFilter.Next()
>    at Lucene.Net.Index.DocumentWriter.InvertDocument(Document doc)
>    at Lucene.Net.Index.DocumentWriter.AddDocument(String segment, Document 
> doc)
>    at Lucene.Net.Index.IndexWriter.AddDocument(Document doc, Analyzer 
> analyzer)

-- 
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