コード例 #1
0
ファイル: fts_language.cpp プロジェクト: alabid/mongo
// static
StatusWithFTSLanguage FTSLanguage::make(StringData langName, TextIndexVersion textIndexVersion) {
    switch (textIndexVersion) {
        case TEXT_INDEX_VERSION_2: {
            LanguageMapV2::const_iterator it = languageMapV2.find(langName.toString());
            if (it == languageMapV2.end()) {
                // TEXT_INDEX_VERSION_2 rejects unrecognized language strings.
                Status status = Status(ErrorCodes::BadValue,
                                       mongoutils::str::stream() << "unsupported language: \""
                                                                 << langName << "\"");
                return StatusWithFTSLanguage(status);
            }

            return StatusWithFTSLanguage(it->second);
        }
        case TEXT_INDEX_VERSION_1: {
            LanguageMapV1::const_iterator it = languageMapV1.find(langName);
            if (it == languageMapV1.end()) {
                // TEXT_INDEX_VERSION_1 treats unrecognized language strings as "none".
                return StatusWithFTSLanguage(&languageNoneV1);
            }
            return StatusWithFTSLanguage(it->second);
        }
    }

    verify(false);
    return StatusWithFTSLanguage(Status::OK());
}
コード例 #2
0
ファイル: fts_language.cpp プロジェクト: acmorrow/mongo
// static
StatusWithFTSLanguage FTSLanguage::make(StringData langName, TextIndexVersion textIndexVersion) {
    if (textIndexVersion >= TEXT_INDEX_VERSION_2) {
        LanguageMap* languageMap =
            (textIndexVersion == TEXT_INDEX_VERSION_3) ? &languageMapV3 : &languageMapV2;

        LanguageMap::const_iterator it = languageMap->find(langName.toString());

        if (it == languageMap->end()) {
            // TEXT_INDEX_VERSION_2 and above reject unrecognized language strings.
            Status status = Status(ErrorCodes::BadValue,
                                   str::stream() << "unsupported language: \"" << langName
                                                 << "\" for text index version "
                                                 << textIndexVersion);
            return StatusWithFTSLanguage(status);
        }

        return StatusWithFTSLanguage(it->second);
    } else {
        // Legacy text index.
        invariant(textIndexVersion == TEXT_INDEX_VERSION_1);
        LanguageMapLegacy::const_iterator it = languageMapV1.find(langName);
        if (it == languageMapV1.end()) {
            // TEXT_INDEX_VERSION_1 treats unrecognized language strings as "none".
            return StatusWithFTSLanguage(&languageNoneV1);
        }
        return StatusWithFTSLanguage(it->second);
    }
}