diff options
author | unknown <serg@serg.mysql.com> | 2002-04-18 14:12:29 +0000 |
---|---|---|
committer | unknown <serg@serg.mysql.com> | 2002-04-18 14:12:29 +0000 |
commit | 862769a30ec0643bd59c8a6e8f0cd0c0d4cbed94 (patch) | |
tree | 41a1575c9ff76d1abb797f7fa4a654207dc3cdb5 /myisam/ft_parser.c | |
parent | d8764f0b4a83bcd5958dad215c7bc59db807dc39 (diff) | |
download | mariadb-git-862769a30ec0643bd59c8a6e8f0cd0c0d4cbed94.tar.gz |
phrase search
Diffstat (limited to 'myisam/ft_parser.c')
-rw-r--r-- | myisam/ft_parser.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/myisam/ft_parser.c b/myisam/ft_parser.c index 78529efed0b..39dcf4b458b 100644 --- a/myisam/ft_parser.c +++ b/myisam/ft_parser.c @@ -133,13 +133,20 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param) for (;doc<end;doc++) { if (true_word_char(*doc)) break; - if (*doc == FTB_LBR || *doc == FTB_RBR) + if (*doc == FTB_RQUOT && param->quot) { + param->quot=doc-1; + *start=doc+1; + return 3; /* FTB_RBR */ + } + if ((*doc == FTB_LBR || *doc == FTB_RBR || *doc == FTB_LQUOT) + && !param->quot) { /* param->prev=' '; */ *start=doc+1; + if (*doc == FTB_LQUOT) param->quot=*start; return (*doc == FTB_RBR)+2; } - if (param->prev == ' ') + if (param->prev == ' ' && !param->quot) { if (*doc == FTB_YES ) { param->yesno=+1; continue; } else if (*doc == FTB_EGAL) { param->yesno= 0; continue; } else @@ -149,7 +156,8 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param) if (*doc == FTB_NEG ) { param->pmsign=!param->pmsign; continue; } } param->prev=*doc; - param->yesno=param->plusminus=param->pmsign=0; + param->yesno=(param->quot != 0); + param->plusminus=param->pmsign=0; } mwc=0; |