/* Copyright (c) 2000-2008 MySQL AB, 2009 Sun Microsystems, Inc.
Copyright ( c ) 2026 , MariaDB plc .
Use is subject to license terms .
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation ; version 2 of the License .
This program is distributed in the hope that it will be useful ,
but WITHOUT ANY WARRANTY ; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
GNU General Public License for more details .
You should have received a copy of the GNU General Public License
along with this program ; if not , write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA */
/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
#include "ftdefs.h"
READ_ONLY_SYSVAR ulong ft_min_word_len= 4 ;
READ_ONLY_SYSVAR ulong ft_max_word_len= HA_FT_MAXCHARLEN;
READ_ONLY_SYSVAR ulong ft_query_expansion_limit= 5 ;
const char *ft_boolean_syntax= DEFAULT_FTB_SYNTAX;
const HA_KEYSEG ft_keysegs[FT_SEGS]= {
{
0 , /* charset */
HA_FT_WLEN, /* start */
0 , /* null_pos */
0 , /* Bit pos */
HA_VAR_LENGTH_PART | HA_PACK_KEY, /* flag */
HA_FT_MAXBYTELEN, /* length */
63 , /* language (will be overwritten) */
HA_KEYTYPE_VARTEXT2, /* type */
0 , /* null_bit */
2 , 0 /* bit_start, bit_length */
},
{
/*
Note , this ( and the last HA_KEYTYPE_END ) segment should NOT
be packed in any way , otherwise w_search ( ) won ' t be able to
update key entry ' in vivo '
*/
0 , 0 , 0 , 0 , HA_NO_SORT, HA_FT_WLEN, 63 , HA_FT_WTYPE, 0 , 0 , 0
}
};
const struct _ft_vft _ft_vft_nlq= {
ft_nlq_read_next, ft_nlq_find_relevance, ft_nlq_close_search,
ft_nlq_get_relevance, ft_nlq_reinit_search
};
const struct _ft_vft _ft_vft_boolean= {
ft_boolean_read_next, ft_boolean_find_relevance, ft_boolean_close_search,
ft_boolean_get_relevance, ft_boolean_reinit_search
};
READ_ONLY_SYSVAR const char *ft_stopword_file= 0 ;
const char *ft_precompiled_stopwords[]= {
#ifdef COMPILE_STOPWORDS_IN
/* This particular stopword list was taken from SMART distribution
ftp : //ftp.cs.cornell.edu/pub/smart/smart.11.0.tar.Z
it was slightly modified to my taste , though
*/
"a's" ,
"able" ,
"about" ,
"above" ,
"according" ,
"accordingly" ,
"across" ,
"actually" ,
"after" ,
"afterwards" ,
"again" ,
"against" ,
"ain't" ,
"all" ,
"allow" ,
"allows" ,
"almost" ,
"alone" ,
"along" ,
"already" ,
"also" ,
"although" ,
"always" ,
"am" ,
"among" ,
"amongst" ,
"an" ,
"and" ,
"another" ,
"any" ,
"anybody" ,
"anyhow" ,
"anyone" ,
"anything" ,
"anyway" ,
"anyways" ,
"anywhere" ,
"apart" ,
"appear" ,
"appreciate" ,
"appropriate" ,
"are" ,
"aren't" ,
"around" ,
"as" ,
"aside" ,
"ask" ,
"asking" ,
"associated" ,
"at" ,
"available" ,
"away" ,
"awfully" ,
"be" ,
"became" ,
"because" ,
"become" ,
"becomes" ,
"becoming" ,
"been" ,
"before" ,
"beforehand" ,
"behind" ,
"being" ,
"believe" ,
"below" ,
"beside" ,
"besides" ,
"best" ,
"better" ,
"between" ,
"beyond" ,
"both" ,
"brief" ,
"but" ,
"by" ,
"c'mon" ,
"c's" ,
"came" ,
"can" ,
"can't" ,
"cannot" ,
"cant" ,
"cause" ,
"causes" ,
"certain" ,
"certainly" ,
"changes" ,
"clearly" ,
"co" ,
"com" ,
"come" ,
"comes" ,
"concerning" ,
"consequently" ,
"consider" ,
"considering" ,
"contain" ,
"containing" ,
"contains" ,
"corresponding" ,
"could" ,
"couldn't" ,
"course" ,
"currently" ,
"definitely" ,
"described" ,
"despite" ,
"did" ,
"didn't" ,
"different" ,
"do" ,
"does" ,
"doesn't" ,
"doing" ,
"don't" ,
"done" ,
"down" ,
"downwards" ,
"during" ,
"each" ,
"edu" ,
"eg" ,
"eight" ,
"either" ,
"else" ,
"elsewhere" ,
"enough" ,
"entirely" ,
"especially" ,
"et" ,
"etc" ,
"even" ,
"ever" ,
"every" ,
"everybody" ,
"everyone" ,
"everything" ,
"everywhere" ,
"ex" ,
"exactly" ,
"example" ,
"except" ,
"far" ,
"few" ,
"fifth" ,
"first" ,
"five" ,
"followed" ,
"following" ,
"follows" ,
"for" ,
"former" ,
"formerly" ,
"forth" ,
"four" ,
"from" ,
"further" ,
"furthermore" ,
"get" ,
"gets" ,
"getting" ,
"given" ,
"gives" ,
"go" ,
"goes" ,
"going" ,
"gone" ,
"got" ,
"gotten" ,
"greetings" ,
"had" ,
"hadn't" ,
"happens" ,
"hardly" ,
"has" ,
"hasn't" ,
"have" ,
"haven't" ,
"having" ,
"he" ,
"he's" ,
"hello" ,
"help" ,
"hence" ,
"her" ,
"here" ,
"here's" ,
"hereafter" ,
"hereby" ,
"herein" ,
"hereupon" ,
"hers" ,
"herself" ,
"hi" ,
"him" ,
"himself" ,
"his" ,
"hither" ,
"hopefully" ,
"how" ,
"howbeit" ,
"however" ,
"i'd" ,
"i'll" ,
"i'm" ,
"i've" ,
"ie" ,
"if" ,
"ignored" ,
"immediate" ,
"in" ,
"inasmuch" ,
"inc" ,
"indeed" ,
"indicate" ,
"indicated" ,
"indicates" ,
"inner" ,
"insofar" ,
"instead" ,
"into" ,
"inward" ,
"is" ,
"isn't" ,
"it" ,
"it'd" ,
"it'll" ,
"it's" ,
"its" ,
"itself" ,
"just" ,
"keep" ,
"keeps" ,
"kept" ,
"know" ,
"knows" ,
"known" ,
"last" ,
"lately" ,
"later" ,
"latter" ,
"latterly" ,
"least" ,
"less" ,
"lest" ,
"let" ,
"let's" ,
"like" ,
"liked" ,
"likely" ,
"little" ,
"look" ,
"looking" ,
"looks" ,
"ltd" ,
"mainly" ,
"many" ,
"may" ,
"maybe" ,
"me" ,
"mean" ,
"meanwhile" ,
"merely" ,
"might" ,
"more" ,
"moreover" ,
"most" ,
"mostly" ,
"much" ,
"must" ,
"my" ,
"myself" ,
"name" ,
"namely" ,
"nd" ,
"near" ,
"nearly" ,
"necessary" ,
"need" ,
"needs" ,
"neither" ,
"never" ,
"nevertheless" ,
"new" ,
"next" ,
"nine" ,
"no" ,
"nobody" ,
"non" ,
"none" ,
"noone" ,
"nor" ,
"normally" ,
"not" ,
"nothing" ,
"novel" ,
"now" ,
"nowhere" ,
"obviously" ,
"of" ,
"off" ,
"often" ,
"oh" ,
"ok" ,
"okay" ,
"old" ,
"on" ,
"once" ,
"one" ,
"ones" ,
"only" ,
"onto" ,
"or" ,
"other" ,
"others" ,
"otherwise" ,
"ought" ,
"our" ,
"ours" ,
"ourselves" ,
"out" ,
"outside" ,
"over" ,
"overall" ,
"own" ,
"particular" ,
"particularly" ,
"per" ,
"perhaps" ,
"placed" ,
"please" ,
"plus" ,
"possible" ,
"presumably" ,
"probably" ,
"provides" ,
"que" ,
"quite" ,
"qv" ,
"rather" ,
"rd" ,
"re" ,
"really" ,
"reasonably" ,
"regarding" ,
"regardless" ,
"regards" ,
"relatively" ,
"respectively" ,
"right" ,
"said" ,
"same" ,
"saw" ,
"say" ,
"saying" ,
"says" ,
"second" ,
"secondly" ,
"see" ,
"seeing" ,
"seem" ,
"seemed" ,
"seeming" ,
"seems" ,
"seen" ,
"self" ,
"selves" ,
"sensible" ,
"sent" ,
"serious" ,
"seriously" ,
"seven" ,
"several" ,
"shall" ,
"she" ,
"should" ,
"shouldn't" ,
"since" ,
"six" ,
"so" ,
"some" ,
"somebody" ,
"somehow" ,
"someone" ,
"something" ,
"sometime" ,
"sometimes" ,
"somewhat" ,
"somewhere" ,
"soon" ,
"sorry" ,
"specified" ,
"specify" ,
"specifying" ,
"still" ,
"sub" ,
"such" ,
"sup" ,
"sure" ,
"t's" ,
"take" ,
"taken" ,
"tell" ,
"tends" ,
"th" ,
"than" ,
"thank" ,
"thanks" ,
"thanx" ,
"that" ,
"that's" ,
"thats" ,
"the" ,
"their" ,
"theirs" ,
"them" ,
"themselves" ,
"then" ,
"thence" ,
"there" ,
"there's" ,
"thereafter" ,
"thereby" ,
"therefore" ,
"therein" ,
"theres" ,
"thereupon" ,
"these" ,
"they" ,
"they'd" ,
"they'll" ,
"they're" ,
"they've" ,
"think" ,
"third" ,
"this" ,
"thorough" ,
"thoroughly" ,
"those" ,
"though" ,
"three" ,
"through" ,
"throughout" ,
"thru" ,
"thus" ,
"to" ,
"together" ,
"too" ,
"took" ,
"toward" ,
"towards" ,
"tried" ,
"tries" ,
"truly" ,
"try" ,
"trying" ,
"twice" ,
"two" ,
"un" ,
"under" ,
"unfortunately" ,
"unless" ,
"unlikely" ,
"until" ,
"unto" ,
"up" ,
"upon" ,
"us" ,
"use" ,
"used" ,
"useful" ,
"uses" ,
"using" ,
"usually" ,
"value" ,
"various" ,
"very" ,
"via" ,
"viz" ,
"vs" ,
"want" ,
"wants" ,
"was" ,
"wasn't" ,
"way" ,
"we" ,
"we'd" ,
"we'll" ,
"we're" ,
"we've" ,
"welcome" ,
"well" ,
"went" ,
"were" ,
"weren't" ,
"what" ,
"what's" ,
"whatever" ,
"when" ,
"whence" ,
"whenever" ,
"where" ,
"where's" ,
"whereafter" ,
"whereas" ,
"whereby" ,
"wherein" ,
"whereupon" ,
"wherever" ,
"whether" ,
"which" ,
"while" ,
"whither" ,
"who" ,
"who's" ,
"whoever" ,
"whole" ,
"whom" ,
"whose" ,
"why" ,
"will" ,
"willing" ,
"wish" ,
"with" ,
"within" ,
"without" ,
"won't" ,
"wonder" ,
"would" ,
"wouldn't" ,
"yes" ,
"yet" ,
"you" ,
"you'd" ,
"you'll" ,
"you're" ,
"you've" ,
"your" ,
"yours" ,
"yourself" ,
"yourselves" ,
"zero" ,
#endif
NULL };
static int ft_default_parser_parse(MYSQL_FTPARSER_PARAM *param)
{
return param->mysql_parse(param, param->doc, param->length);
}
struct st_mysql_ftparser ft_default_parser=
{
MYSQL_FTPARSER_INTERFACE_VERSION, ft_default_parser_parse, 0 , 0
};
Messung V0.5 in Prozent C=98 H=100 G=98