| webmaster@1 | 1 <?php | 
| webmaster@1 | 2 // $Id: search.install,v 1.14 2007/12/28 10:53:27 dries Exp $ | 
| webmaster@1 | 3 | 
| webmaster@1 | 4 /** | 
| webmaster@1 | 5  * Implementation of hook_install(). | 
| webmaster@1 | 6  */ | 
| webmaster@1 | 7 function search_install() { | 
| webmaster@1 | 8   // Create tables. | 
| webmaster@1 | 9   drupal_install_schema('search'); | 
| webmaster@1 | 10 } | 
| webmaster@1 | 11 | 
| webmaster@1 | 12 /** | 
| webmaster@1 | 13  * Implementation of hook_uninstall(). | 
| webmaster@1 | 14  */ | 
| webmaster@1 | 15 function search_uninstall() { | 
| webmaster@1 | 16   // Remove tables. | 
| webmaster@1 | 17   drupal_uninstall_schema('search'); | 
| webmaster@1 | 18 | 
| webmaster@1 | 19   variable_del('minimum_word_size'); | 
| webmaster@1 | 20   variable_del('overlap_cjk'); | 
| webmaster@1 | 21   variable_del('search_cron_limit'); | 
| webmaster@1 | 22 } | 
| webmaster@1 | 23 | 
| webmaster@1 | 24 /** | 
| webmaster@1 | 25  * Implementation of hook_schema(). | 
| webmaster@1 | 26  */ | 
| webmaster@1 | 27 function search_schema() { | 
| webmaster@1 | 28   $schema['search_dataset'] = array( | 
| webmaster@1 | 29     'description' => t('Stores items that will be searched.'), | 
| webmaster@1 | 30     'fields' => array( | 
| webmaster@1 | 31       'sid' => array( | 
| webmaster@1 | 32         'type' => 'int', | 
| webmaster@1 | 33         'unsigned' => TRUE, | 
| webmaster@1 | 34         'not null' => TRUE, | 
| webmaster@1 | 35         'default' => 0, | 
| webmaster@1 | 36         'description' => t('Search item ID, e.g. node ID for nodes.'), | 
| webmaster@1 | 37       ), | 
| webmaster@1 | 38       'type' => array( | 
| webmaster@1 | 39         'type' => 'varchar', | 
| webmaster@1 | 40         'length' => 16, | 
| webmaster@1 | 41         'not null' => FALSE, | 
| webmaster@1 | 42         'description' => t('Type of item, e.g. node.'), | 
| webmaster@1 | 43       ), | 
| webmaster@1 | 44       'data' => array( | 
| webmaster@1 | 45         'type' => 'text', | 
| webmaster@1 | 46         'not null' => TRUE, | 
| webmaster@1 | 47         'size' => 'big', | 
| webmaster@1 | 48         'description' => t('List of space-separated words from the item.'), | 
| webmaster@1 | 49       ), | 
| webmaster@1 | 50       'reindex' => array( | 
| webmaster@1 | 51         'type' => 'int', | 
| webmaster@1 | 52         'unsigned' => TRUE, | 
| webmaster@1 | 53         'not null' => TRUE, | 
| webmaster@1 | 54         'default' => 0, | 
| webmaster@1 | 55         'description' => t('Set to force node reindexing.'), | 
| webmaster@1 | 56       ), | 
| webmaster@1 | 57     ), | 
| webmaster@1 | 58     'unique keys' => array('sid_type' => array('sid', 'type')), | 
| webmaster@1 | 59   ); | 
| webmaster@1 | 60 | 
| webmaster@1 | 61   $schema['search_index'] = array( | 
| webmaster@1 | 62     'description' => t('Stores the search index, associating words, items and scores.'), | 
| webmaster@1 | 63     'fields' => array( | 
| webmaster@1 | 64       'word' => array( | 
| webmaster@1 | 65         'type' => 'varchar', | 
| webmaster@1 | 66         'length' => 50, | 
| webmaster@1 | 67         'not null' => TRUE, | 
| webmaster@1 | 68         'default' => '', | 
| webmaster@1 | 69         'description' => t('The {search_total}.word that is associated with the search item.'), | 
| webmaster@1 | 70       ), | 
| webmaster@1 | 71       'sid' => array( | 
| webmaster@1 | 72         'type' => 'int', | 
| webmaster@1 | 73         'unsigned' => TRUE, | 
| webmaster@1 | 74         'not null' => TRUE, | 
| webmaster@1 | 75         'default' => 0, | 
| webmaster@1 | 76         'description' => t('The {search_dataset}.sid of the searchable item to which the word belongs.'), | 
| webmaster@1 | 77       ), | 
| webmaster@1 | 78       'type' => array( | 
| webmaster@1 | 79         'type' => 'varchar', | 
| webmaster@1 | 80         'length' => 16, | 
| webmaster@1 | 81         'not null' => FALSE, | 
| webmaster@1 | 82         'description' => t('The {search_dataset}.type of the searchable item to which the word belongs.'), | 
| webmaster@1 | 83       ), | 
| webmaster@1 | 84       'score' => array( | 
| webmaster@1 | 85         'type' => 'float', | 
| webmaster@1 | 86         'not null' => FALSE, | 
| webmaster@1 | 87         'description' => t('The numeric score of the word, higher being more important.'), | 
| webmaster@1 | 88       ), | 
| webmaster@1 | 89     ), | 
| webmaster@1 | 90     'indexes' => array( | 
| webmaster@1 | 91       'sid_type' => array('sid', 'type'), | 
| webmaster@1 | 92       'word' => array('word') | 
| webmaster@1 | 93     ), | 
| webmaster@1 | 94     'unique keys' => array('word_sid_type' => array('word', 'sid', 'type')), | 
| webmaster@1 | 95   ); | 
| webmaster@1 | 96 | 
| webmaster@1 | 97   $schema['search_total'] = array( | 
| webmaster@1 | 98     'description' => t('Stores search totals for words.'), | 
| webmaster@1 | 99     'fields' => array( | 
| webmaster@1 | 100       'word' => array( | 
| webmaster@1 | 101         'description' => t('Primary Key: Unique word in the search index.'), | 
| webmaster@1 | 102         'type' => 'varchar', | 
| webmaster@1 | 103         'length' => 50, | 
| webmaster@1 | 104         'not null' => TRUE, | 
| webmaster@1 | 105         'default' => '', | 
| webmaster@1 | 106       ), | 
| webmaster@1 | 107       'count' => array( | 
| webmaster@1 | 108         'description' => t("The count of the word in the index using Zipf's law to equalize the probability distribution."), | 
| webmaster@1 | 109         'type' => 'float', | 
| webmaster@1 | 110         'not null' => FALSE, | 
| webmaster@1 | 111       ), | 
| webmaster@1 | 112     ), | 
| webmaster@1 | 113     'primary key' => array('word'), | 
| webmaster@1 | 114   ); | 
| webmaster@1 | 115 | 
| webmaster@1 | 116   $schema['search_node_links'] = array( | 
| webmaster@1 | 117     'description' => t('Stores items (like nodes) that link to other nodes, used to improve search scores for nodes that are frequently linked to.'), | 
| webmaster@1 | 118     'fields' => array( | 
| webmaster@1 | 119       'sid' => array( | 
| webmaster@1 | 120         'type' => 'int', | 
| webmaster@1 | 121         'unsigned' => TRUE, | 
| webmaster@1 | 122         'not null' => TRUE, | 
| webmaster@1 | 123         'default' => 0, | 
| webmaster@1 | 124         'description' => t('The {search_dataset}.sid of the searchable item containing the link to the node.'), | 
| webmaster@1 | 125       ), | 
| webmaster@1 | 126       'type' => array( | 
| webmaster@1 | 127         'type' => 'varchar', | 
| webmaster@1 | 128         'length' => 16, | 
| webmaster@1 | 129         'not null' => TRUE, | 
| webmaster@1 | 130         'default' => '', | 
| webmaster@1 | 131         'description' => t('The {search_dataset}.type of the searchable item containing the link to the node.'), | 
| webmaster@1 | 132       ), | 
| webmaster@1 | 133       'nid' => array( | 
| webmaster@1 | 134         'type' => 'int', | 
| webmaster@1 | 135         'unsigned' => TRUE, | 
| webmaster@1 | 136         'not null' => TRUE, | 
| webmaster@1 | 137         'default' => 0, | 
| webmaster@1 | 138         'description' => t('The {node}.nid that this item links to.'), | 
| webmaster@1 | 139       ), | 
| webmaster@1 | 140       'caption' => array( | 
| webmaster@1 | 141         'type' => 'text', | 
| webmaster@1 | 142         'size' => 'big', | 
| webmaster@1 | 143         'not null' => FALSE, | 
| webmaster@1 | 144         'description' => t('The text used to link to the {node}.nid.'), | 
| webmaster@1 | 145       ), | 
| webmaster@1 | 146     ), | 
| webmaster@1 | 147     'primary key' => array('sid', 'type', 'nid'), | 
| webmaster@1 | 148     'indexes' => array('nid' => array('nid')), | 
| webmaster@1 | 149   ); | 
| webmaster@1 | 150 | 
| webmaster@1 | 151   return $schema; | 
| webmaster@1 | 152 } | 
| webmaster@1 | 153 |