ft_static.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:9k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. /* Written by Sergei A. Golubchik, who has a shared copyright to this code */
  14. #include "ftdefs.h"
  15. ulong ft_min_word_len=4;
  16. ulong ft_max_word_len=HA_FT_MAXCHARLEN;
  17. ulong ft_query_expansion_limit=5;
  18. char ft_boolean_syntax[]="+ -><()~*:""&|";
  19. const HA_KEYSEG ft_keysegs[FT_SEGS]={
  20. {
  21.     HA_KEYTYPE_VARTEXT,               /* type */
  22.     63,                               /* language (will be overwritten) */
  23.     0, 0, 0,                          /* null_bit, bit_start, bit_end */
  24.     HA_VAR_LENGTH | HA_PACK_KEY,      /* flag */
  25.     HA_FT_MAXBYTELEN,                 /* length */
  26.     HA_FT_WLEN,                       /* start */
  27.     0,                                /* null_pos */
  28.     NULL                              /* charset  */
  29.   },
  30.   {
  31. /*
  32.   Note, this (and the last HA_KEYTYPE_END) segment should NOT
  33.   be packed in any way, otherwise w_search() won't be able to
  34.   update key entry 'in vivo'
  35. */
  36.       HA_FT_WTYPE, 63, 0, 0, 0, HA_NO_SORT, HA_FT_WLEN, 0, 0, NULL
  37.   }
  38. };
  39. const struct _ft_vft _ft_vft_nlq = {
  40.   ft_nlq_read_next, ft_nlq_find_relevance, ft_nlq_close_search,
  41.   ft_nlq_get_relevance,  ft_nlq_reinit_search
  42. };
  43. const struct _ft_vft _ft_vft_boolean = {
  44.   ft_boolean_read_next, ft_boolean_find_relevance, ft_boolean_close_search,
  45.   ft_boolean_get_relevance,  ft_boolean_reinit_search
  46. };
  47. FT_INFO *ft_init_search(uint flags, void *info, uint keynr,
  48.                         byte *query, uint query_len, CHARSET_INFO *cs,
  49.                         byte *record)
  50. {
  51.   FT_INFO *res;
  52.   if (flags & FT_BOOL)
  53.     res= ft_init_boolean_search((MI_INFO *)info, keynr, query, query_len,cs);
  54.   else
  55.     res= ft_init_nlq_search((MI_INFO *)info, keynr, query, query_len, flags,
  56.     record);
  57.   return res;
  58. }
  59. const char *ft_stopword_file = 0;
  60. const char *ft_precompiled_stopwords[] = {
  61. #ifdef COMPILE_STOPWORDS_IN
  62. /* This particular stopword list was taken from SMART distribution
  63.    ftp://ftp.cs.cornell.edu/pub/smart/smart.11.0.tar.Z
  64.    it was slightly modified to my taste, though
  65.  */
  66.   "a's",
  67.   "able",
  68.   "about",
  69.   "above",
  70.   "according",
  71.   "accordingly",
  72.   "across",
  73.   "actually",
  74.   "after",
  75.   "afterwards",
  76.   "again",
  77.   "against",
  78.   "ain't",
  79.   "all",
  80.   "allow",
  81.   "allows",
  82.   "almost",
  83.   "alone",
  84.   "along",
  85.   "already",
  86.   "also",
  87.   "although",
  88.   "always",
  89.   "am",
  90.   "among",
  91.   "amongst",
  92.   "an",
  93.   "and",
  94.   "another",
  95.   "any",
  96.   "anybody",
  97.   "anyhow",
  98.   "anyone",
  99.   "anything",
  100.   "anyway",
  101.   "anyways",
  102.   "anywhere",
  103.   "apart",
  104.   "appear",
  105.   "appreciate",
  106.   "appropriate",
  107.   "are",
  108.   "aren't",
  109.   "around",
  110.   "as",
  111.   "aside",
  112.   "ask",
  113.   "asking",
  114.   "associated",
  115.   "at",
  116.   "available",
  117.   "away",
  118.   "awfully",
  119.   "be",
  120.   "became",
  121.   "because",
  122.   "become",
  123.   "becomes",
  124.   "becoming",
  125.   "been",
  126.   "before",
  127.   "beforehand",
  128.   "behind",
  129.   "being",
  130.   "believe",
  131.   "below",
  132.   "beside",
  133.   "besides",
  134.   "best",
  135.   "better",
  136.   "between",
  137.   "beyond",
  138.   "both",
  139.   "brief",
  140.   "but",
  141.   "by",
  142.   "c'mon",
  143.   "c's",
  144.   "came",
  145.   "can",
  146.   "can't",
  147.   "cannot",
  148.   "cant",
  149.   "cause",
  150.   "causes",
  151.   "certain",
  152.   "certainly",
  153.   "changes",
  154.   "clearly",
  155.   "co",
  156.   "com",
  157.   "come",
  158.   "comes",
  159.   "concerning",
  160.   "consequently",
  161.   "consider",
  162.   "considering",
  163.   "contain",
  164.   "containing",
  165.   "contains",
  166.   "corresponding",
  167.   "could",
  168.   "couldn't",
  169.   "course",
  170.   "currently",
  171.   "definitely",
  172.   "described",
  173.   "despite",
  174.   "did",
  175.   "didn't",
  176.   "different",
  177.   "do",
  178.   "does",
  179.   "doesn't",
  180.   "doing",
  181.   "don't",
  182.   "done",
  183.   "down",
  184.   "downwards",
  185.   "during",
  186.   "each",
  187.   "edu",
  188.   "eg",
  189.   "eight",
  190.   "either",
  191.   "else",
  192.   "elsewhere",
  193.   "enough",
  194.   "entirely",
  195.   "especially",
  196.   "et",
  197.   "etc",
  198.   "even",
  199.   "ever",
  200.   "every",
  201.   "everybody",
  202.   "everyone",
  203.   "everything",
  204.   "everywhere",
  205.   "ex",
  206.   "exactly",
  207.   "example",
  208.   "except",
  209.   "far",
  210.   "few",
  211.   "fifth",
  212.   "first",
  213.   "five",
  214.   "followed",
  215.   "following",
  216.   "follows",
  217.   "for",
  218.   "former",
  219.   "formerly",
  220.   "forth",
  221.   "four",
  222.   "from",
  223.   "further",
  224.   "furthermore",
  225.   "get",
  226.   "gets",
  227.   "getting",
  228.   "given",
  229.   "gives",
  230.   "go",
  231.   "goes",
  232.   "going",
  233.   "gone",
  234.   "got",
  235.   "gotten",
  236.   "greetings",
  237.   "had",
  238.   "hadn't",
  239.   "happens",
  240.   "hardly",
  241.   "has",
  242.   "hasn't",
  243.   "have",
  244.   "haven't",
  245.   "having",
  246.   "he",
  247.   "he's",
  248.   "hello",
  249.   "help",
  250.   "hence",
  251.   "her",
  252.   "here",
  253.   "here's",
  254.   "hereafter",
  255.   "hereby",
  256.   "herein",
  257.   "hereupon",
  258.   "hers",
  259.   "herself",
  260.   "hi",
  261.   "him",
  262.   "himself",
  263.   "his",
  264.   "hither",
  265.   "hopefully",
  266.   "how",
  267.   "howbeit",
  268.   "however",
  269.   "i'd",
  270.   "i'll",
  271.   "i'm",
  272.   "i've",
  273.   "ie",
  274.   "if",
  275.   "ignored",
  276.   "immediate",
  277.   "in",
  278.   "inasmuch",
  279.   "inc",
  280.   "indeed",
  281.   "indicate",
  282.   "indicated",
  283.   "indicates",
  284.   "inner",
  285.   "insofar",
  286.   "instead",
  287.   "into",
  288.   "inward",
  289.   "is",
  290.   "isn't",
  291.   "it",
  292.   "it'd",
  293.   "it'll",
  294.   "it's",
  295.   "its",
  296.   "itself",
  297.   "just",
  298.   "keep",
  299.   "keeps",
  300.   "kept",
  301.   "know",
  302.   "knows",
  303.   "known",
  304.   "last",
  305.   "lately",
  306.   "later",
  307.   "latter",
  308.   "latterly",
  309.   "least",
  310.   "less",
  311.   "lest",
  312.   "let",
  313.   "let's",
  314.   "like",
  315.   "liked",
  316.   "likely",
  317.   "little",
  318.   "look",
  319.   "looking",
  320.   "looks",
  321.   "ltd",
  322.   "mainly",
  323.   "many",
  324.   "may",
  325.   "maybe",
  326.   "me",
  327.   "mean",
  328.   "meanwhile",
  329.   "merely",
  330.   "might",
  331.   "more",
  332.   "moreover",
  333.   "most",
  334.   "mostly",
  335.   "much",
  336.   "must",
  337.   "my",
  338.   "myself",
  339.   "name",
  340.   "namely",
  341.   "nd",
  342.   "near",
  343.   "nearly",
  344.   "necessary",
  345.   "need",
  346.   "needs",
  347.   "neither",
  348.   "never",
  349.   "nevertheless",
  350.   "new",
  351.   "next",
  352.   "nine",
  353.   "no",
  354.   "nobody",
  355.   "non",
  356.   "none",
  357.   "noone",
  358.   "nor",
  359.   "normally",
  360.   "not",
  361.   "nothing",
  362.   "novel",
  363.   "now",
  364.   "nowhere",
  365.   "obviously",
  366.   "of",
  367.   "off",
  368.   "often",
  369.   "oh",
  370.   "ok",
  371.   "okay",
  372.   "old",
  373.   "on",
  374.   "once",
  375.   "one",
  376.   "ones",
  377.   "only",
  378.   "onto",
  379.   "or",
  380.   "other",
  381.   "others",
  382.   "otherwise",
  383.   "ought",
  384.   "our",
  385.   "ours",
  386.   "ourselves",
  387.   "out",
  388.   "outside",
  389.   "over",
  390.   "overall",
  391.   "own",
  392.   "particular",
  393.   "particularly",
  394.   "per",
  395.   "perhaps",
  396.   "placed",
  397.   "please",
  398.   "plus",
  399.   "possible",
  400.   "presumably",
  401.   "probably",
  402.   "provides",
  403.   "que",
  404.   "quite",
  405.   "qv",
  406.   "rather",
  407.   "rd",
  408.   "re",
  409.   "really",
  410.   "reasonably",
  411.   "regarding",
  412.   "regardless",
  413.   "regards",
  414.   "relatively",
  415.   "respectively",
  416.   "right",
  417.   "said",
  418.   "same",
  419.   "saw",
  420.   "say",
  421.   "saying",
  422.   "says",
  423.   "second",
  424.   "secondly",
  425.   "see",
  426.   "seeing",
  427.   "seem",
  428.   "seemed",
  429.   "seeming",
  430.   "seems",
  431.   "seen",
  432.   "self",
  433.   "selves",
  434.   "sensible",
  435.   "sent",
  436.   "serious",
  437.   "seriously",
  438.   "seven",
  439.   "several",
  440.   "shall",
  441.   "she",
  442.   "should",
  443.   "shouldn't",
  444.   "since",
  445.   "six",
  446.   "so",
  447.   "some",
  448.   "somebody",
  449.   "somehow",
  450.   "someone",
  451.   "something",
  452.   "sometime",
  453.   "sometimes",
  454.   "somewhat",
  455.   "somewhere",
  456.   "soon",
  457.   "sorry",
  458.   "specified",
  459.   "specify",
  460.   "specifying",
  461.   "still",
  462.   "sub",
  463.   "such",
  464.   "sup",
  465.   "sure",
  466.   "t's",
  467.   "take",
  468.   "taken",
  469.   "tell",
  470.   "tends",
  471.   "th",
  472.   "than",
  473.   "thank",
  474.   "thanks",
  475.   "thanx",
  476.   "that",
  477.   "that's",
  478.   "thats",
  479.   "the",
  480.   "their",
  481.   "theirs",
  482.   "them",
  483.   "themselves",
  484.   "then",
  485.   "thence",
  486.   "there",
  487.   "there's",
  488.   "thereafter",
  489.   "thereby",
  490.   "therefore",
  491.   "therein",
  492.   "theres",
  493.   "thereupon",
  494.   "these",
  495.   "they",
  496.   "they'd",
  497.   "they'll",
  498.   "they're",
  499.   "they've",
  500.   "think",
  501.   "third",
  502.   "this",
  503.   "thorough",
  504.   "thoroughly",
  505.   "those",
  506.   "though",
  507.   "three",
  508.   "through",
  509.   "throughout",
  510.   "thru",
  511.   "thus",
  512.   "to",
  513.   "together",
  514.   "too",
  515.   "took",
  516.   "toward",
  517.   "towards",
  518.   "tried",
  519.   "tries",
  520.   "truly",
  521.   "try",
  522.   "trying",
  523.   "twice",
  524.   "two",
  525.   "un",
  526.   "under",
  527.   "unfortunately",
  528.   "unless",
  529.   "unlikely",
  530.   "until",
  531.   "unto",
  532.   "up",
  533.   "upon",
  534.   "us",
  535.   "use",
  536.   "used",
  537.   "useful",
  538.   "uses",
  539.   "using",
  540.   "usually",
  541.   "value",
  542.   "various",
  543.   "very",
  544.   "via",
  545.   "viz",
  546.   "vs",
  547.   "want",
  548.   "wants",
  549.   "was",
  550.   "wasn't",
  551.   "way",
  552.   "we",
  553.   "we'd",
  554.   "we'll",
  555.   "we're",
  556.   "we've",
  557.   "welcome",
  558.   "well",
  559.   "went",
  560.   "were",
  561.   "weren't",
  562.   "what",
  563.   "what's",
  564.   "whatever",
  565.   "when",
  566.   "whence",
  567.   "whenever",
  568.   "where",
  569.   "where's",
  570.   "whereafter",
  571.   "whereas",
  572.   "whereby",
  573.   "wherein",
  574.   "whereupon",
  575.   "wherever",
  576.   "whether",
  577.   "which",
  578.   "while",
  579.   "whither",
  580.   "who",
  581.   "who's",
  582.   "whoever",
  583.   "whole",
  584.   "whom",
  585.   "whose",
  586.   "why",
  587.   "will",
  588.   "willing",
  589.   "wish",
  590.   "with",
  591.   "within",
  592.   "without",
  593.   "won't",
  594.   "wonder",
  595.   "would",
  596.   "would",
  597.   "wouldn't",
  598.   "yes",
  599.   "yet",
  600.   "you",
  601.   "you'd",
  602.   "you'll",
  603.   "you're",
  604.   "you've",
  605.   "your",
  606.   "yours",
  607.   "yourself",
  608.   "yourselves",
  609.   "zero",
  610. #endif
  611.   NULL };