00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _terimber_fuzzyphonetic_h_
00029 #define _terimber_fuzzyphonetic_h_
00030
00031 #include "fuzzy/fuzzyimpl.h"
00032
00033 BEGIN_TERIMBER_NAMESPACE
00034 #pragma pack(4)
00035
00038 namespace fuzzyphonetic
00039 {
00041 inline
00042 char
00043 to_upper( char ch
00044 );
00046 inline
00047 char
00048 to_lower( char ch
00049 );
00050
00053 metaphone_key
00054 convert_to_metaphone(const char* word,
00055 size_t len,
00056 byte_allocator& all
00057 );
00059 void
00060 convert_to_reflection(const char* word,
00061 size_t len,
00062 byte_allocator& all,
00063 reflection_key& reflection
00064 );
00066 template< class T >
00067 inline
00068 size_t
00069 metaphone_distance(const T* ax,
00070 size_t x,
00071 const T* ay,
00072 size_t y,
00073 byte_allocator& tmp,
00074 size_t max_penalty
00075 );
00077 inline
00078 size_t
00079 find_metaphone_distance(const metaphone_key& x,
00080 const metaphone_key& y,
00081 byte_allocator& tmp,
00082 size_t max_penalty
00083 );
00085 inline
00086 size_t
00087 find_reflection_distance(const reflection_key& x,
00088 const reflection_key& y,
00089 byte_allocator& tmp,
00090 size_t max_penalty
00091 );
00093 inline
00094 size_t
00095 find_word_distance(const char* x,
00096 size_t xlen,
00097 const char* y,
00098 size_t ylen,
00099 byte_allocator& tmp,
00100 size_t max_penalty
00101 );
00102 }
00103
00104 #pragma pack()
00105 END_TERIMBER_NAMESPACE
00106
00107 #endif //_terimber_fuzzymetaphoneic_h_