39#define true_word_char(ctype, character) \
40 ((ctype) & (_MY_U | _MY_L | _MY_NMR) || (character) == '_')
42#define FT_MAX_WORD_LEN_FOR_SORT 31
44#define FTPARSER_MEMROOT_ALLOC_SIZE 65536
58#define LWS_FOR_QUERY LWS_TF
59#define LWS_IN_USE LWS_LOG
60#define PRENORM_IN_USE PRENORM_AVG
61#define NORM_IN_USE NORM_PIVOT
62#define GWS_IN_USE GWS_PROB
65#define LWS_BINARY (count > 0)
66#define LWS_SQUARE (count * count)
67#define LWS_LOG (count ? (log((double)count) + 1) : 0)
69#define PRENORM_NONE (p->weight)
70#define PRENORM_MAX (p->weight / docstat.max)
71#define PRENORM_AUG (0.4 + 0.6 * p->weight / docstat.max)
72#define PRENORM_AVG (p->weight / docstat.sum * docstat.uniq)
73#define PRENORM_AVGLOG \
74 ((1 + log(p->weight)) / (1 + log(docstat.sum / docstat.uniq)))
77#define NORM_SUM (docstat.nsum)
78#define NORM_COS (sqrt(docstat.nsum2))
80#define PIVOT_VAL (0.0115)
81#define NORM_PIVOT (1 + PIVOT_VAL * docstat.uniq)
83#define GWS_NORM (1 / sqrt(sum2))
84#define GWS_GFIDF (sum / doc_cnt)
86#define GWS_IDF log(aio->info->state->records / doc_cnt)
87#define GWS_IDF1 log((double)aio->info->state->records / doc_cnt)
89 ((aio->info->state->records > doc_cnt) \
90 ? log(((double)(aio->info->state->records - doc_cnt)) / doc_cnt) \
92#define GWS_FREQ (1.0 / doc_cnt)
93#define GWS_SQUARED pow(log((double)aio->info->state->records / doc_cnt), 2)
94#define GWS_CUBIC pow(log((double)aio->info->state->records / doc_cnt), 3)
96 (1 - (suml / sum - log(sum)) / log(aio->info->state->records))
100#define FTB_YES (ft_boolean_syntax[0])
101#define FTB_EGAL (ft_boolean_syntax[1])
102#define FTB_NO (ft_boolean_syntax[2])
103#define FTB_INC (ft_boolean_syntax[3])
104#define FTB_DEC (ft_boolean_syntax[4])
105#define FTB_LBR (ft_boolean_syntax[5])
106#define FTB_RBR (ft_boolean_syntax[6])
107#define FTB_NEG (ft_boolean_syntax[7])
108#define FTB_TRUNC (ft_boolean_syntax[8])
109#define FTB_LQUOT (ft_boolean_syntax[10])
110#define FTB_RQUOT (ft_boolean_syntax[11])
FT_WORD * ft_linearize(TREE *, MEM_ROOT *)
Definition: ft_parser.cc:66
void ftparser_call_deinitializer(MI_INFO *info)
Definition: ft_parser.cc:362
void ft_parse_init(TREE *, const CHARSET_INFO *)
Definition: ft_parser.cc:243
FT_INFO * ft_init_nlq_search(MI_INFO *, uint, uchar *, uint, uint, uchar *)
Definition: ft_nlq_search.cc:218
int ft_nlq_read_next(FT_INFO *, char *)
Definition: ft_nlq_search.cc:307
const struct _ft_vft _ft_vft_boolean
Definition: ft_static.cc:60
const struct _ft_vft _ft_vft_nlq
Definition: ft_static.cc:57
int ft_parse(TREE *, uchar *, int, struct st_mysql_ftparser *parser, MYSQL_FTPARSER_PARAM *, MEM_ROOT *)
Definition: ft_parser.cc:289
float ft_nlq_find_relevance(FT_INFO *, uchar *, uint)
Definition: ft_nlq_search.cc:330
void ft_boolean_close_search(FT_INFO *)
Definition: ft_boolean_search.cc:940
void _mi_ft_segiterator_dummy_init(const uchar *, uint, FT_SEG_ITERATOR *)
Definition: ft_update.cc:48
void ft_nlq_close_search(FT_INFO *)
Definition: ft_nlq_search.cc:355
float ft_boolean_find_relevance(FT_INFO *, uchar *, uint)
Definition: ft_boolean_search.cc:883
uchar ft_get_word(const CHARSET_INFO *, uchar **, uchar *, FT_WORD *, MYSQL_FTPARSER_BOOLEAN_INFO *)
Definition: ft_parser.cc:119
void ft_nlq_reinit_search(FT_INFO *)
Definition: ft_nlq_search.cc:362
float ft_nlq_get_relevance(FT_INFO *)
Definition: ft_nlq_search.cc:357
my_off_t ft_nlq_get_docid(FT_INFO *)
MYSQL_FTPARSER_PARAM * ftparser_call_initializer(MI_INFO *info, uint keynr, uint paramnr)
Definition: ft_parser.cc:333
uint _mi_ft_parse(TREE *, MI_INFO *, uint, const uchar *, MYSQL_FTPARSER_PARAM *, MEM_ROOT *)
Definition: ft_update.cc:101
FT_WORD * _mi_ft_parserecord(MI_INFO *, uint, const uchar *, MEM_ROOT *)
Definition: ft_update.cc:120
struct _st_ft_seg_iterator FT_SEG_ITERATOR
FT_INFO * ft_init_boolean_search(MI_INFO *, uint, uchar *, uint, const CHARSET_INFO *)
Definition: ft_boolean_search.cc:515
int is_stopword(char *word, uint len)
Definition: ft_stopwords.cc:123
uint _mi_ft_segiterator(FT_SEG_ITERATOR *)
Definition: ft_update.cc:67
my_off_t ft_boolean_get_docid(FT_INFO *)
MYSQL_FTPARSER_PARAM * ftparser_alloc_param(MI_INFO *info)
Definition: ft_parser.cc:311
uchar ft_simple_get_word(const CHARSET_INFO *, uchar **, const uchar *, FT_WORD *, bool)
Definition: ft_parser.cc:209
void _mi_ft_segiterator_init(MI_INFO *, uint, const uchar *, FT_SEG_ITERATOR *)
Definition: ft_update.cc:39
int ft_boolean_read_next(FT_INFO *, char *)
Definition: ft_boolean_search.cc:742
uint _ft_make_key(MI_INFO *, uint, uchar *, FT_WORD *, my_off_t)
Definition: ft_update.cc:265
float ft_boolean_get_relevance(FT_INFO *)
Definition: ft_boolean_search.cc:949
void ft_boolean_reinit_search(FT_INFO *)
Definition: ft_boolean_search.cc:954
Some definitions for full-text indices.
A better implementation of the UNIX ctype(3) library.
ulonglong my_off_t
Definition: my_inttypes.h:72
unsigned char uchar
Definition: my_inttypes.h:52
Code for handling of priority queues.
Definition: m_ctype.h:385
Definition: ft_global.h:72
FTS query token.
Definition: fts0tokenize.h:58
uint len
word len
Definition: fts0tokenize.h:60
double weight
word weight, unused in innodb
Definition: fts0tokenize.h:61
uchar * pos
word start pointer
Definition: fts0tokenize.h:59
Definition: my_compare.h:60
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:83
Definition: myisamdef.h:252
Definition: plugin_ftparser.h:129
Definition: plugin_ftparser.h:191
Definition: ft_global.h:48
uint len
Definition: ftdefs.h:132
HA_KEYSEG * seg
Definition: ftdefs.h:133
const uchar * rec
Definition: ftdefs.h:134
uint num
Definition: ftdefs.h:132
const uchar * pos
Definition: ftdefs.h:134
Definition: plugin_ftparser.h:212
unsigned int uint
Definition: uca9-dump.cc:75