org.carrot2.text.linguistic.SnowballStemmerAdapter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of carrot2-mini Show documentation
Show all versions of carrot2-mini Show documentation
Carrot2 search results clustering framework. Minimal functional subset
(core algorithms and infrastructure, no document sources).
/*
* Carrot2 project.
*
* Copyright (C) 2002-2019, Dawid Weiss, Stanisław Osiński.
* All rights reserved.
*
* Refer to the full license file "carrot2.LICENSE"
* in the root folder of the repository checkout or at:
* http://www.carrot2.org/carrot2.LICENSE
*/
package org.carrot2.text.linguistic;
import java.util.Arrays;
import org.carrot2.text.linguistic.snowball.SnowballProgram;
import org.carrot2.text.util.MutableCharArray;
/**
* An adapter converting Snowball programs into {@link IStemmer} interface.
*/
class SnowballStemmerAdapter implements IStemmer
{
private final SnowballProgram s;
public SnowballStemmerAdapter(SnowballProgram s)
{
this.s = s;
}
public CharSequence stem(CharSequence word)
{
final int len = word.length();
char [] buffer = s.getCurrentBuffer();
if (buffer.length < len)
buffer = new char [len];
for (int i = word.length(); --i >= 0;)
buffer[i] = word.charAt(i);
s.setCurrent(buffer, len);
if (s.stem())
{
return new MutableCharArray(Arrays.copyOf(
s.getCurrentBuffer(),
s.getCurrentBufferLength()));
}
else
{
return null;
}
}
}