Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
74ff35ee
Commit
74ff35ee
authored
Nov 22, 2001
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ft_boolean_syntax variable
myisam/ft_nlq_search.c: comments cleanup
parent
6dd4ec67
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
49 additions
and
46 deletions
+49
-46
include/ft_global.h
include/ft_global.h
+1
-0
myisam/ft_boolean_search.c
myisam/ft_boolean_search.c
+16
-16
myisam/ft_nlq_search.c
myisam/ft_nlq_search.c
+1
-1
myisam/ft_parser.c
myisam/ft_parser.c
+18
-20
myisam/ft_static.c
myisam/ft_static.c
+1
-0
myisam/ftdefs.h
myisam/ftdefs.h
+9
-8
mysql-test/r/fulltext_var.result
mysql-test/r/fulltext_var.result
+1
-0
sql/mysqld.cc
sql/mysqld.cc
+2
-1
No files found.
include/ft_global.h
View file @
74ff35ee
...
@@ -49,6 +49,7 @@ extern const char *ft_precompiled_stopwords[];
...
@@ -49,6 +49,7 @@ extern const char *ft_precompiled_stopwords[];
extern
ulong
ft_min_word_len
;
extern
ulong
ft_min_word_len
;
extern
ulong
ft_max_word_len
;
extern
ulong
ft_max_word_len
;
extern
ulong
ft_max_word_len_for_sort
;
extern
ulong
ft_max_word_len_for_sort
;
extern
char
*
ft_boolean_syntax
;
int
ft_init_stopwords
(
const
char
**
);
int
ft_init_stopwords
(
const
char
**
);
void
ft_free_stopwords
(
void
);
void
ft_free_stopwords
(
void
);
...
...
myisam/ft_boolean_search.c
View file @
74ff35ee
...
@@ -36,7 +36,7 @@ static double _wghts[11]={
...
@@ -36,7 +36,7 @@ static double _wghts[11]={
3
.
375000000000000
,
3
.
375000000000000
,
5
.
062500000000000
,
5
.
062500000000000
,
7
.
593750000000000
};
7
.
593750000000000
};
static
double
*
wghts
=
_wghts
+
5
;
/
/ wghts[i] = 1.5**i
static
double
*
wghts
=
_wghts
+
5
;
/
* wghts[i] = 1.5**i */
static
double
_nwghts
[
11
]
=
{
static
double
_nwghts
[
11
]
=
{
-
0
.
065
843621399177
,
-
0
.
065
843621399177
,
...
@@ -50,7 +50,7 @@ static double _nwghts[11]={
...
@@ -50,7 +50,7 @@ static double _nwghts[11]={
-
1
.
687500000000000
,
-
1
.
687500000000000
,
-
2
.
531250000000000
,
-
2
.
531250000000000
,
-
3
.
796875000000000
};
-
3
.
796875000000000
};
static
double
*
nwghts
=
_nwghts
+
5
;
/
/ nwghts[i] = -0.5*1.5**i
static
double
*
nwghts
=
_nwghts
+
5
;
/
* nwghts[i] = -0.5*1.5**i */
typedef
struct
st_ftb_expr
FTB_EXPR
;
typedef
struct
st_ftb_expr
FTB_EXPR
;
struct
st_ftb_expr
{
struct
st_ftb_expr
{
...
@@ -114,20 +114,7 @@ void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
...
@@ -114,20 +114,7 @@ void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
byte
r
=
param
.
plusminus
;
byte
r
=
param
.
plusminus
;
float
weight
=
(
param
.
pmsign
?
nwghts
:
wghts
)[(
r
>
5
)
?
5
:
((
r
<-
5
)
?-
5
:
r
)];
float
weight
=
(
param
.
pmsign
?
nwghts
:
wghts
)[(
r
>
5
)
?
5
:
((
r
<-
5
)
?-
5
:
r
)];
switch
(
res
)
{
switch
(
res
)
{
case
FTB_LBR
:
case
1
:
/* word found */
ftbe
=
(
FTB_EXPR
*
)
alloc_root
(
&
ftb
->
mem_root
,
sizeof
(
FTB_EXPR
));
ftbe
->
yesno
=
param
.
yesno
;
ftbe
->
weight
=
weight
;
ftbe
->
up
=
up
;
ftbe
->
ythresh
=
0
;
ftbe
->
docid
=
HA_POS_ERROR
;
if
(
ftbe
->
yesno
>
0
)
up
->
ythresh
++
;
_ftb_parse_query
(
ftb
,
start
,
end
,
ftbe
,
depth
+
1
,
(
param
.
yesno
<
0
?
depth
+
1
:
ndepth
));
break
;
case
FTB_RBR
:
return
;
case
1
:
ftbw
=
(
FTB_WORD
*
)
alloc_root
(
&
ftb
->
mem_root
,
ftbw
=
(
FTB_WORD
*
)
alloc_root
(
&
ftb
->
mem_root
,
sizeof
(
FTB_WORD
)
+
(
param
.
trunc
?
MI_MAX_KEY_BUFF
:
w
.
len
+
extra
));
sizeof
(
FTB_WORD
)
+
(
param
.
trunc
?
MI_MAX_KEY_BUFF
:
w
.
len
+
extra
));
ftbw
->
len
=
w
.
len
+
1
;
ftbw
->
len
=
w
.
len
+
1
;
...
@@ -142,6 +129,19 @@ void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
...
@@ -142,6 +129,19 @@ void _ftb_parse_query(FTB *ftb, byte **start, byte *end,
if
(
ftbw
->
yesno
>
0
)
up
->
ythresh
++
;
if
(
ftbw
->
yesno
>
0
)
up
->
ythresh
++
;
queue_insert
(
&
ftb
->
queue
,
(
byte
*
)
ftbw
);
queue_insert
(
&
ftb
->
queue
,
(
byte
*
)
ftbw
);
break
;
break
;
case
2
:
/* left bracket */
ftbe
=
(
FTB_EXPR
*
)
alloc_root
(
&
ftb
->
mem_root
,
sizeof
(
FTB_EXPR
));
ftbe
->
yesno
=
param
.
yesno
;
ftbe
->
weight
=
weight
;
ftbe
->
up
=
up
;
ftbe
->
ythresh
=
0
;
ftbe
->
docid
=
HA_POS_ERROR
;
if
(
ftbe
->
yesno
>
0
)
up
->
ythresh
++
;
_ftb_parse_query
(
ftb
,
start
,
end
,
ftbe
,
depth
+
1
,
(
param
.
yesno
<
0
?
depth
+
1
:
ndepth
));
break
;
case
3
:
/* right bracket */
return
;
}
}
}
}
return
;
return
;
...
...
myisam/ft_nlq_search.c
View file @
74ff35ee
...
@@ -253,7 +253,7 @@ float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid,
...
@@ -253,7 +253,7 @@ float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid,
int
a
,
b
,
c
;
int
a
,
b
,
c
;
FT_DOC
*
docs
=
handler
->
doc
;
FT_DOC
*
docs
=
handler
->
doc
;
/
/ Assuming docs[] is sorted by dpos...
/
* Assuming docs[] is sorted by dpos... */
for
(
a
=
0
,
b
=
handler
->
ndocs
,
c
=
(
a
+
b
)
/
2
;
b
-
a
>
1
;
c
=
(
a
+
b
)
/
2
)
for
(
a
=
0
,
b
=
handler
->
ndocs
,
c
=
(
a
+
b
)
/
2
;
b
-
a
>
1
;
c
=
(
a
+
b
)
/
2
)
{
{
...
...
myisam/ft_parser.c
View file @
74ff35ee
...
@@ -33,9 +33,6 @@ typedef struct st_ft_docstat {
...
@@ -33,9 +33,6 @@ typedef struct st_ft_docstat {
double
max
,
nsum
,
nsum2
;
double
max
,
nsum
,
nsum2
;
#endif
/* EVAL_RUN */
#endif
/* EVAL_RUN */
// MI_INFO *info;
// uint keynr;
// byte *keybuf;
}
FT_DOCSTAT
;
}
FT_DOCSTAT
;
static
int
FT_WORD_cmp
(
void
*
cmp_arg
,
FT_WORD
*
w1
,
FT_WORD
*
w2
)
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)
...
@@ -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 */
/* transforms tree of words into the array, applying normalization */
FT_WORD
*
ft_linearize
(
//MI_INFO *info, uint keynr,
FT_WORD
*
ft_linearize
(
TREE
*
wtree
)
//byte *keybuf,
TREE
*
wtree
)
{
{
FT_WORD
*
wlist
,
*
p
;
FT_WORD
*
wlist
,
*
p
;
FT_DOCSTAT
docstat
;
FT_DOCSTAT
docstat
;
...
@@ -74,9 +69,6 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr,
...
@@ -74,9 +69,6 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr,
if
((
wlist
=
(
FT_WORD
*
)
my_malloc
(
sizeof
(
FT_WORD
)
*
if
((
wlist
=
(
FT_WORD
*
)
my_malloc
(
sizeof
(
FT_WORD
)
*
(
1
+
wtree
->
elements_in_tree
),
MYF
(
0
))))
(
1
+
wtree
->
elements_in_tree
),
MYF
(
0
))))
{
{
// docstat.info=info;
// docstat.keynr=keynr;
// docstat.keybuf=keybuf;
docstat
.
list
=
wlist
;
docstat
.
list
=
wlist
;
docstat
.
uniq
=
wtree
->
elements_in_tree
;
docstat
.
uniq
=
wtree
->
elements_in_tree
;
#ifdef EVAL_RUN
#ifdef EVAL_RUN
...
@@ -122,12 +114,20 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr,
...
@@ -122,12 +114,20 @@ FT_WORD * ft_linearize(//MI_INFO *info, uint keynr,
#endif
#endif
#define word_char(X) (true_word_char(X) || misc_word_char(X))
#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
ft_get_word
(
byte
**
start
,
byte
*
end
,
FT_WORD
*
word
,
FTB_PARAM
*
param
)
{
{
byte
*
doc
=*
start
;
byte
*
doc
=*
start
;
int
mwc
;
int
mwc
;
param
->
yesno
=
param
->
plusminus
=
param
->
pmsign
=
0
;
param
->
yesno
=
(
FTB_YES
==
' '
)
?
1
:
0
;
param
->
plusminus
=
param
->
pmsign
=
0
;
while
(
doc
<
end
)
while
(
doc
<
end
)
{
{
...
@@ -138,18 +138,16 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param)
...
@@ -138,18 +138,16 @@ byte ft_get_word(byte **start, byte *end, FT_WORD *word, FTB_PARAM *param)
{
{
/* param->prev=' '; */
/* param->prev=' '; */
*
start
=
doc
+
1
;
*
start
=
doc
+
1
;
return
*
doc
;
return
(
*
doc
==
FTB_RBR
)
+
2
;
}
}
if
(
param
->
prev
==
' '
)
if
(
param
->
prev
==
' '
)
{
{
switch
(
*
doc
)
{
if
(
*
doc
==
FTB_YES
)
{
param
->
yesno
=+
1
;
continue
;
}
else
case
FTB_YES
:
param
->
yesno
=+
1
;
continue
;
if
(
*
doc
==
FTB_EGAL
)
{
param
->
yesno
=
0
;
continue
;
}
else
case
FTB_NO
:
param
->
yesno
=-
1
;
continue
;
if
(
*
doc
==
FTB_NO
)
{
param
->
yesno
=-
1
;
continue
;
}
else
case
FTB_INC
:
param
->
plusminus
++
;
continue
;
if
(
*
doc
==
FTB_INC
)
{
param
->
plusminus
++
;
continue
;
}
else
case
FTB_DEC
:
param
->
plusminus
--
;
continue
;
if
(
*
doc
==
FTB_DEC
)
{
param
->
plusminus
--
;
continue
;
}
else
case
FTB_NEG
:
param
->
pmsign
=!
param
->
pmsign
;
continue
;
if
(
*
doc
==
FTB_NEG
)
{
param
->
pmsign
=!
param
->
pmsign
;
continue
;
}
default:
break
;
}
}
}
param
->
prev
=*
doc
;
param
->
prev
=*
doc
;
param
->
yesno
=
param
->
plusminus
=
param
->
pmsign
=
0
;
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)
...
@@ -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
++
)
else
if
(
!
misc_word_char
(
*
doc
)
||
mwc
++
)
break
;
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
;
word
->
len
=
(
uint
)(
doc
-
word
->
pos
)
-
mwc
;
if
((
param
->
trunc
=
(
doc
<
end
&&
*
doc
==
FTB_TRUNC
)))
if
((
param
->
trunc
=
(
doc
<
end
&&
*
doc
==
FTB_TRUNC
)))
doc
++
;
doc
++
;
...
...
myisam/ft_static.c
View file @
74ff35ee
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
ulong
ft_min_word_len
=
4
;
ulong
ft_min_word_len
=
4
;
ulong
ft_max_word_len
=
HA_FT_MAXLEN
;
ulong
ft_max_word_len
=
HA_FT_MAXLEN
;
ulong
ft_max_word_len_for_sort
=
20
;
ulong
ft_max_word_len_for_sort
=
20
;
char
*
ft_boolean_syntax
=
"+ -><()~*"
;
const
MI_KEYSEG
ft_keysegs
[
FT_SEGS
]
=
{
const
MI_KEYSEG
ft_keysegs
[
FT_SEGS
]
=
{
{
{
...
...
myisam/ftdefs.h
View file @
74ff35ee
...
@@ -86,14 +86,15 @@ extern ulong collstat;
...
@@ -86,14 +86,15 @@ extern ulong collstat;
/*=================================================================*/
/*=================================================================*/
/* Boolean search operators */
/* Boolean search operators */
#define FTB_YES '+'
#define FTB_YES (ft_boolean_syntax[0])
#define FTB_NO '-'
#define FTB_EGAL (ft_boolean_syntax[1])
#define FTB_INC '>'
#define FTB_NO (ft_boolean_syntax[2])
#define FTB_DEC '<'
#define FTB_INC (ft_boolean_syntax[3])
#define FTB_LBR '('
#define FTB_DEC (ft_boolean_syntax[4])
#define FTB_RBR ')'
#define FTB_LBR (ft_boolean_syntax[5])
#define FTB_NEG '~'
#define FTB_RBR (ft_boolean_syntax[6])
#define FTB_TRUNC '*'
#define FTB_NEG (ft_boolean_syntax[7])
#define FTB_TRUNC (ft_boolean_syntax[8])
typedef
struct
st_ft_word
{
typedef
struct
st_ft_word
{
byte
*
pos
;
byte
*
pos
;
...
...
mysql-test/r/fulltext_var.result
View file @
74ff35ee
...
@@ -3,3 +3,4 @@ Variable_name Value
...
@@ -3,3 +3,4 @@ Variable_name Value
ft_min_word_len 4
ft_min_word_len 4
ft_max_word_len 254
ft_max_word_len 254
ft_max_word_len_for_sort 20
ft_max_word_len_for_sort 20
ft_boolean_syntax + -><()~*
sql/mysqld.cc
View file @
74ff35ee
...
@@ -1883,7 +1883,7 @@ The server will not act as a slave.");
...
@@ -1883,7 +1883,7 @@ The server will not act as a slave.");
if
(
opt_myisam_log
)
if
(
opt_myisam_log
)
(
void
)
mi_log
(
1
);
(
void
)
mi_log
(
1
);
ft_init_stopwords
(
ft_precompiled_stopwords
);
/* SerG */
ft_init_stopwords
(
ft_precompiled_stopwords
);
#ifdef __WIN__
#ifdef __WIN__
#define MYSQL_ERR_FILE "mysql.err"
#define MYSQL_ERR_FILE "mysql.err"
...
@@ -2986,6 +2986,7 @@ struct show_var_st init_vars[]= {
...
@@ -2986,6 +2986,7 @@ struct show_var_st init_vars[]= {
{
"ft_min_word_len"
,
(
char
*
)
&
ft_min_word_len
,
SHOW_LONG
},
{
"ft_min_word_len"
,
(
char
*
)
&
ft_min_word_len
,
SHOW_LONG
},
{
"ft_max_word_len"
,
(
char
*
)
&
ft_max_word_len
,
SHOW_LONG
},
{
"ft_max_word_len"
,
(
char
*
)
&
ft_max_word_len
,
SHOW_LONG
},
{
"ft_max_word_len_for_sort"
,(
char
*
)
&
ft_max_word_len_for_sort
,
SHOW_LONG
},
{
"ft_max_word_len_for_sort"
,(
char
*
)
&
ft_max_word_len_for_sort
,
SHOW_LONG
},
{
"ft_boolean_syntax"
,
ft_boolean_syntax
,
SHOW_CHAR
},
{
"have_bdb"
,
(
char
*
)
&
have_berkeley_db
,
SHOW_HAVE
},
{
"have_bdb"
,
(
char
*
)
&
have_berkeley_db
,
SHOW_HAVE
},
{
"have_innodb"
,
(
char
*
)
&
have_innodb
,
SHOW_HAVE
},
{
"have_innodb"
,
(
char
*
)
&
have_innodb
,
SHOW_HAVE
},
{
"have_isam"
,
(
char
*
)
&
have_isam
,
SHOW_HAVE
},
{
"have_isam"
,
(
char
*
)
&
have_isam
,
SHOW_HAVE
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment