summaryrefslogtreecommitdiff
path: root/myisam/ft_parser.c
diff options
context:
space:
mode:
authorunknown <serg@serg.mysql.com>2002-04-18 14:12:29 +0000
committerunknown <serg@serg.mysql.com>2002-04-18 14:12:29 +0000
commit862769a30ec0643bd59c8a6e8f0cd0c0d4cbed94 (patch)
tree41a1575c9ff76d1abb797f7fa4a654207dc3cdb5 /myisam/ft_parser.c
parentd8764f0b4a83bcd5958dad215c7bc59db807dc39 (diff)
downloadmariadb-git-862769a30ec0643bd59c8a6e8f0cd0c0d4cbed94.tar.gz
phrase search
Diffstat (limited to 'myisam/ft_parser.c')
-rw-r--r--myisam/ft_parser.c14
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;