mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
7134ffec21
Some simple optimzations, more comments and indentation changes. Add ` around database in 'use database' in binary log. Moved max_error_count and max_warning_count to variables struct. Removed SHOW_WARNS_COUNT and SHOW_ERRORS_COUNT calls. Changed string functions to use character set of first string argument as default return characterset (Each string function can change the above assumption if needed)
625 lines
8.8 KiB
C
625 lines
8.8 KiB
C
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
|
|
|
|
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; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
/* Written by Sergei A. Golubchik, who has a shared copyright to this code */
|
|
|
|
#include "ftdefs.h"
|
|
|
|
ulong ft_min_word_len=4;
|
|
ulong ft_max_word_len=HA_FT_MAXLEN;
|
|
ulong ft_max_word_len_for_sort=20;
|
|
const char *ft_boolean_syntax="+ -><()~*:\"\"&|";
|
|
|
|
const HA_KEYSEG ft_keysegs[FT_SEGS]={
|
|
{
|
|
HA_KEYTYPE_VARTEXT, /* type */
|
|
7, /* language (will be overwritten) */
|
|
0, 0, 0, /* null_bit, bit_start, bit_end */
|
|
HA_VAR_LENGTH | HA_PACK_KEY, /* flag */
|
|
HA_FT_MAXLEN, /* length */
|
|
#ifdef EVAL_RUN
|
|
HA_FT_WLEN+1, /* start */
|
|
#else /* EVAL_RUN */
|
|
HA_FT_WLEN, /* start */
|
|
#endif /* EVAL_RUN */
|
|
0, /* null_pos */
|
|
NULL /* sort_order */
|
|
},
|
|
#ifdef EVAL_RUN
|
|
{
|
|
HA_KEYTYPE_INT8, 7, 0, 0, 0, 0, 1, HA_FT_WLEN, 0, NULL
|
|
},
|
|
#endif /* EVAL_RUN */
|
|
{
|
|
HA_FT_WTYPE, 7, 0, 0, 0, HA_NO_SORT, HA_FT_WLEN, 0, 0, NULL
|
|
}
|
|
};
|
|
|
|
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
|
|
};
|
|
|
|
FT_INFO *(*_ft_init_vft[2])(MI_INFO *, uint, byte *, uint, my_bool) =
|
|
{ ft_init_nlq_search, ft_init_boolean_search };
|
|
|
|
FT_INFO *ft_init_search(uint mode, void *info, uint keynr,
|
|
byte *query, uint query_len, my_bool presort)
|
|
{
|
|
return (*_ft_init_vft[mode])((MI_INFO *)info, keynr,
|
|
query, query_len, presort);
|
|
}
|
|
|
|
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",
|
|
"would",
|
|
"wouldn't",
|
|
"yes",
|
|
"yet",
|
|
"you",
|
|
"you'd",
|
|
"you'll",
|
|
"you're",
|
|
"you've",
|
|
"your",
|
|
"yours",
|
|
"yourself",
|
|
"yourselves",
|
|
"zero",
|
|
#endif
|
|
|
|
NULL };
|