Remember language used to create stemmer

This commit is contained in:
Kovid Goyal 2021-06-28 20:22:18 +05:30
parent 5b10767860
commit 1c366a46bd
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -102,18 +102,20 @@ class IteratorDescription {
class Stemmer { class Stemmer {
private: private:
struct sb_stemmer *handle; struct sb_stemmer *handle;
char lang_name[32];
public: public:
Stemmer() : handle(NULL) {} Stemmer() : handle(NULL), lang_name() {}
Stemmer(const char *lang) { Stemmer(const char *lang) {
char buf[32] = {0};
size_t len = strlen(lang); size_t len = strlen(lang);
for (size_t i = 0; i < sizeof(buf) - 1 && i < len; i++) { for (size_t i = 0; i < sizeof(lang_name) - 1 && i < len; i++) {
buf[i] = lang[i]; lang_name[i] = lang[i];
if ('A' <= buf[i] && buf[i] <= 'Z') buf[i] += 'a' - 'A'; if ('A' <= lang_name[i] && lang_name[i] <= 'Z') lang_name[i] += 'a' - 'A';
} }
handle = sb_stemmer_new(buf, NULL); lang_name[std::min(len, sizeof(lang_name) - 1)] = 0;
handle = sb_stemmer_new(lang_name, NULL);
} }
const char* language_name() const { return lang_name; }
~Stemmer() { ~Stemmer() {
if (handle) { if (handle) {