diff options
author | unknown <serg@serg.mysql.com> | 2001-11-22 19:35:35 +0100 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2001-11-22 19:35:35 +0100 |
commit | 8b5eedb7255ac34cee3e441e8dd88b875ee5dc08 (patch) | |
tree | 88c2bdef4a2fa66c208f59cf2e0300ebd491fcf9 /myisam/ft_parser.c | |
parent | 198df9007eaaf1aacbdff6c3e6b438bfd013a66c (diff) | |
download | mariadb-git-8b5eedb7255ac34cee3e441e8dd88b875ee5dc08.tar.gz |
ft_boolean_syntax variable
myisam/ft_nlq_search.c:
comments cleanup
Diffstat (limited to 'myisam/ft_parser.c')
-rw-r--r-- | myisam/ft_parser.c | 38 |
1 files changed, 18 insertions, 20 deletions
diff --git a/myisam/ft_parser.c b/myisam/ft_parser.c index b09ede78364..35e5959b556 100644 --- a/myisam/ft_parser.c +++ b/myisam/ft_parser.c @@ -33,9 +33,6 @@ typedef struct st_ft_docstat { double max, nsum, nsum2; #endif /* EVAL_RUN */ -// MI_INFO *info; -// uint keynr; -// byte *keybuf; } FT_DOCSTAT; static int FT_WORD_cmp(void* cmp_arg, FT_WORD *w1, FT_WORD *w2) @@ -63,9 +60,7 @@ static int walk_and_copy(FT_WORD *word,uint32 count,FT_DOCSTAT *docstat) /* transforms tree of words into the array, applying normalization */ -FT_WORD * ft_linearize(//MI_INFO *info, uint keynr, - //byte *keybuf, - TREE *wtree) +FT_WORD * ft_linearize(TREE *wtree) { FT_WORD *wlist,*p; FT_DOCSTAT docstat; @@ -74,9 +69,6 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr, if ((wlist=(FT_WORD *) my_malloc(sizeof(FT_WORD)* (1+wtree->elements_in_tree),MYF(0)))) { -// docstat.info=info; -// docstat.keynr=keynr; -// docstat.keybuf=keybuf; docstat.list=wlist; docstat.uniq=wtree->elements_in_tree; #ifdef EVAL_RUN @@ -122,12 +114,20 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr, #endif #define word_char(X) (true_word_char(X) || misc_word_char(X)) + +/* returns: + * 0 - eof + * 1 - word found + * 2 - left bracket + * 3 - right bracket + */ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param) { byte *doc=*start; int mwc; - param->yesno=param->plusminus=param->pmsign=0; + param->yesno=(FTB_YES==' ')?1:0; + param->plusminus=param->pmsign=0; while (doc<end) { @@ -138,18 +138,16 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param) { /* param->prev=' '; */ *start=doc+1; - return *doc; + return (*doc == FTB_RBR)+2; } if (param->prev == ' ') { - switch (*doc) { - case FTB_YES: param->yesno=+1; continue; - case FTB_NO: param->yesno=-1; continue; - case FTB_INC: param->plusminus++; continue; - case FTB_DEC: param->plusminus--; continue; - case FTB_NEG: param->pmsign=!param->pmsign; continue; - default: break; - } + if (*doc == FTB_YES ) { param->yesno=+1; continue; } else + if (*doc == FTB_EGAL) { param->yesno= 0; continue; } else + if (*doc == FTB_NO ) { param->yesno=-1; continue; } else + if (*doc == FTB_INC ) { param->plusminus++; continue; } else + if (*doc == FTB_DEC ) { param->plusminus--; continue; } else + if (*doc == FTB_NEG ) { param->pmsign=!param->pmsign; continue; } } param->prev=*doc; param->yesno=param->plusminus=param->pmsign=0; @@ -162,7 +160,7 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param) else if (!misc_word_char(*doc) || mwc++) break; - param->prev='A'; // be sure *prev is true_word_char + param->prev='A'; /* be sure *prev is true_word_char */ word->len= (uint)(doc-word->pos) - mwc; if ((param->trunc=(doc<end && *doc == FTB_TRUNC))) doc++; |