1*8b6cd535SAndroid Build Coastguard Worker // Copyright (C) 2024 Google LLC 2*8b6cd535SAndroid Build Coastguard Worker // 3*8b6cd535SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 4*8b6cd535SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 5*8b6cd535SAndroid Build Coastguard Worker // You may obtain a copy of the License at 6*8b6cd535SAndroid Build Coastguard Worker // 7*8b6cd535SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0 8*8b6cd535SAndroid Build Coastguard Worker // 9*8b6cd535SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*8b6cd535SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 11*8b6cd535SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*8b6cd535SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 13*8b6cd535SAndroid Build Coastguard Worker // limitations under the License. 14*8b6cd535SAndroid Build Coastguard Worker 15*8b6cd535SAndroid Build Coastguard Worker #ifndef ICING_EXPAND_STEMMING_STEMMER_FACTORY_H_ 16*8b6cd535SAndroid Build Coastguard Worker #define ICING_EXPAND_STEMMING_STEMMER_FACTORY_H_ 17*8b6cd535SAndroid Build Coastguard Worker 18*8b6cd535SAndroid Build Coastguard Worker #include <memory> 19*8b6cd535SAndroid Build Coastguard Worker #include <string> 20*8b6cd535SAndroid Build Coastguard Worker 21*8b6cd535SAndroid Build Coastguard Worker #include "icing/text_classifier/lib3/utils/base/statusor.h" 22*8b6cd535SAndroid Build Coastguard Worker #include "icing/expand/stemming/stemmer.h" 23*8b6cd535SAndroid Build Coastguard Worker 24*8b6cd535SAndroid Build Coastguard Worker namespace icing { 25*8b6cd535SAndroid Build Coastguard Worker namespace lib { 26*8b6cd535SAndroid Build Coastguard Worker 27*8b6cd535SAndroid Build Coastguard Worker namespace stemmer_factory { 28*8b6cd535SAndroid Build Coastguard Worker 29*8b6cd535SAndroid Build Coastguard Worker // Creates a stemmer for the given language code. 30*8b6cd535SAndroid Build Coastguard Worker // 31*8b6cd535SAndroid Build Coastguard Worker // The language code should be a IETF BCP 47 language tag. 32*8b6cd535SAndroid Build Coastguard Worker // - E.g. "en" for English, "fr" for French, etc. 33*8b6cd535SAndroid Build Coastguard Worker // - See https://en.wikipedia.org/wiki/IETF_language_tag for more 34*8b6cd535SAndroid Build Coastguard Worker // information. 35*8b6cd535SAndroid Build Coastguard Worker // 36*8b6cd535SAndroid Build Coastguard Worker // This is the header file for the factory function. Implementations are in the 37*8b6cd535SAndroid Build Coastguard Worker // .cc files, and we select which stemmer and .cc file to build with in each 38*8b6cd535SAndroid Build Coastguard Worker // build rule. 39*8b6cd535SAndroid Build Coastguard Worker // 40*8b6cd535SAndroid Build Coastguard Worker // Returns: 41*8b6cd535SAndroid Build Coastguard Worker // - A stemmer on success 42*8b6cd535SAndroid Build Coastguard Worker // - INVALID_ARGUMENT_ERROR if the language code is invalid or not supported. 43*8b6cd535SAndroid Build Coastguard Worker libtextclassifier3::StatusOr<std::unique_ptr<Stemmer>> Create( 44*8b6cd535SAndroid Build Coastguard Worker std::string language_code); 45*8b6cd535SAndroid Build Coastguard Worker 46*8b6cd535SAndroid Build Coastguard Worker // Whether stemming is enabled. 47*8b6cd535SAndroid Build Coastguard Worker // 48*8b6cd535SAndroid Build Coastguard Worker // This is false for the none-stemmer implementation and true for the 49*8b6cd535SAndroid Build Coastguard Worker // snowball-stemmer implementation. 50*8b6cd535SAndroid Build Coastguard Worker bool IsStemmingEnabled(); 51*8b6cd535SAndroid Build Coastguard Worker 52*8b6cd535SAndroid Build Coastguard Worker } // namespace stemmer_factory 53*8b6cd535SAndroid Build Coastguard Worker 54*8b6cd535SAndroid Build Coastguard Worker } // namespace lib 55*8b6cd535SAndroid Build Coastguard Worker } // namespace icing 56*8b6cd535SAndroid Build Coastguard Worker 57*8b6cd535SAndroid Build Coastguard Worker #endif // ICING_EXPAND_STEMMING_STEMMER_FACTORY_H_ 58