]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Automatically add or drop fulltext indexes
authorEvan Prodromou <evan@status.net>
Sun, 18 Sep 2011 22:28:44 +0000 (18:28 -0400)
committerEvan Prodromou <evan@status.net>
Sun, 18 Sep 2011 22:28:44 +0000 (18:28 -0400)
classes/Notice.php
classes/Profile.php
lib/schema.php

index a38f54f050cc46337194d74915bdc4f3e81a2e71..ce6464c1579ac48e09703e91185788fc8a3d6b93 100644 (file)
@@ -87,7 +87,7 @@ class Notice extends Managed_DataObject
 
     public static function schemaDef()
     {
-        return array(
+        $def = array(
             'fields' => array(
                 'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'),
                 'profile_id' => array('type' => 'int', 'not null' => true, 'description' => 'who made the update'),
@@ -129,6 +129,12 @@ class Notice extends Managed_DataObject
                 'notice_repeatof_idx' => array('repeat_of'),
             )
         );
+
+        if (common_config('search', 'type') == 'fulltext') {
+            $def['fulltext indexes'] = array('content' => array('content'));
+        }
+
+        return $def;
     }
     
        function multiGet($kc, $kvs, $skipNulls=true)
index 8cea91ece6e28ef88b82aa529d2ad01e7c19bf69..b8178e9b660ebbab3678d01469ba7eb27e8f4d62 100644 (file)
@@ -51,7 +51,7 @@ class Profile extends Managed_DataObject
 
     public static function schemaDef()
     {
-        return array(
+        $def = array(
             'description' => 'local and remote users have profiles',
             'fields' => array(
                 'id' => array('type' => 'serial', 'not null' => true, 'description' => 'unique identifier'),
@@ -74,6 +74,14 @@ class Profile extends Managed_DataObject
                 'profile_nickname_idx' => array('nickname'),
             )
         );
+
+        // Add a fulltext index
+
+        if (common_config('search', 'type') == 'fulltext') {
+            $def['fulltext indexes'] = array('nickname' => array('nickname', 'fullname', 'location', 'bio', 'homepage'));
+        }
+
+        return $def;
     }
 
        function multiGet($keyCol, $keyVals, $skipNulls=true)
index e188037e6837a1507ab8c0ac545e8f2a72eab9ae..92555499baffd3f64215cc63933800dfaf476a12 100644 (file)
@@ -630,6 +630,11 @@ class Schema
             $this->appendCreateIndex($statements, $tableName, $indexName, $def['indexes'][$indexName]);
         }
 
+        foreach ($fulltext['mod'] + $fulltext['add'] as $indexName) {
+            $colDef = $def['fulltext indexes'][$indexName];
+            $this->appendCreateFulltextIndex($statements, $tableName, $indexName, $colDef);
+        }
+
         return $statements;
     }