8#ifndef RIME_CORRECTOR_H
9#define RIME_CORRECTOR_H
24 : syllabary_(syllabary) {}
45 if (find(syllable) == end() ||
46 correction.
distance < (*
this)[syllable].distance) {
47 (*this)[syllable] = correction;
62 size_t tolerance) = 0;
72 template <
class... Cs>
83 size_t tolerance)
override;
84 template <
class... Cs>
85 void Add(Cs... args) {
90 vector<of<Corrector>> contents = {};
100 const Script* script =
nullptr,
107 size_t tolerance)
override;
109 const std::string& s2);
111 const std::string& s2,
122 size_t tolerance)
override;
125template <
class... Cs>
126Corrector* CorrectorComponent::Combine(Cs... args) {
127 auto u =
new Unified();
#define RIME_DLL
Definition rime_api.h:33
set< string > Syllabary
Definition vocabulary.h:17
boost::unordered_map< Key, T > hash_map
Definition common.h:53
std::unique_ptr< T > the
Definition common.h:58
int32_t SyllableId
Definition syllabifier.h:21
Definition corrector.h:32
size_t Distance
Definition corrector.h:33
Definition component.h:21
SymDeleteCollector(const Syllabary &syllabary)
Definition corrector.h:23
Script Collect(size_t edit_distance)
Definition corrector.cc:73
Definition corrector.h:34
size_t length
Definition corrector.h:37
size_t distance
Definition corrector.h:35
SyllableId syllable
Definition corrector.h:36
Definition corrector.h:39
void Alter(SyllableId syllable, Correction correction)
Definition corrector.h:44
Definition corrector.h:56
virtual ~Corrector()=default
virtual RIME_DLL void ToleranceSearch(const Prism &prism, const string &key, corrector::Corrections *results, size_t tolerance)=0
~CorrectorComponent() override=default
Corrector * Create(const Ticket &ticket) noexcept override
Definition corrector.cc:301
CorrectorComponent()
Definition corrector.cc:297
RIME_DLL EditDistanceCorrector(const path &file_path)
Definition corrector.cc:243
corrector::Distance RestrictedDistance(const std::string &s1, const std::string &s2, corrector::Distance threshold)
Definition corrector.cc:193
RIME_DLL void ToleranceSearch(const Prism &prism, const string &key, corrector::Corrections *results, size_t tolerance) override
Definition corrector.cc:100
corrector::Distance LevenshteinDistance(const std::string &s1, const std::string &s2)
Definition corrector.cc:163
RIME_DLL bool Build(const Syllabary &syllabary, const Script *script=nullptr, uint32_t dict_file_checksum=0, uint32_t schema_file_checksum=0)
Definition corrector.cc:224
~EditDistanceCorrector() override=default
NearSearchCorrector()=default
~NearSearchCorrector() override=default
void ToleranceSearch(const Prism &prism, const string &key, corrector::Corrections *results, size_t tolerance) override
Definition corrector.cc:246
const path & file_path() const
Definition mapped_file.h:121
uint32_t dict_file_checksum() const
Definition prism.cc:334
uint32_t schema_file_checksum() const
Definition prism.cc:338
RIME_DLL Prism(const path &file_path)
Definition prism.cc:79