All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.carrot2.text.linguistic.SnowballStemmerAdapter Maven / Gradle / Ivy

Go to download

Carrot2 search results clustering framework. Minimal functional subset (core algorithms and infrastructure, no document sources).

There is a newer version: 3.16.3
Show newest version

/*
 * 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;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy