]> git.mxchange.org Git - friendica.git/commitdiff
Speeding up the gcontact search
authorMichael Vogel <icarus@dabo.de>
Sun, 17 Apr 2016 11:46:49 +0000 (13:46 +0200)
committerMichael Vogel <icarus@dabo.de>
Sun, 17 Apr 2016 11:46:49 +0000 (13:46 +0200)
boot.php
database.sql
include/DirSearch.php
include/dbstructure.php
update.php

index 58b4bc0983983f820e4756a5a97f14c0686785c5..13cc2aaf5bdf7a612e47a0d6ee11bcbadc879a63 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -38,7 +38,7 @@ define ( 'FRIENDICA_PLATFORM',     'Friendica');
 define ( 'FRIENDICA_CODENAME',     'Asparagus');
 define ( 'FRIENDICA_VERSION',      '3.5-dev' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1194      );
+define ( 'DB_UPDATE_VERSION',      1195      );
 
 /**
  * @brief Constant with a HTML line break.
index 89b821e23a47ce2e50a0c0dc17544c304f916cf0..cf003da2a8a3f1207119115346a97d6732e54eba 100644 (file)
@@ -1,6 +1,6 @@
 -- ------------------------------------------
 -- Friendica 3.5-dev (Asparagus)
--- DB_UPDATE_VERSION 1194
+-- DB_UPDATE_VERSION 1195
 -- ------------------------------------------
 
 
@@ -171,7 +171,8 @@ CREATE TABLE IF NOT EXISTS `contact` (
        `fetch_further_information` tinyint(1) NOT NULL DEFAULT 0,
        `ffi_keyword_blacklist` mediumtext NOT NULL,
         PRIMARY KEY(`id`),
-        INDEX `uid` (`uid`)
+        INDEX `uid` (`uid`),
+        INDEX `nurl` (`nurl`)
 ) DEFAULT CHARSET=utf8;
 
 --
@@ -333,7 +334,9 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
        `generation` tinyint(3) NOT NULL DEFAULT 0,
        `server_url` varchar(255) NOT NULL DEFAULT '',
         PRIMARY KEY(`id`),
-        INDEX `nurl` (`nurl`),
+        INDEX `name` (`name`),
+        INDEX `nick` (`nick`),
+        INDEX `addr` (`addr`),
         INDEX `updated` (`updated`)
 ) DEFAULT CHARSET=utf8;
 
index 99a0698d467edaf82b7026a0796c6a83114ea377..596860823652bd09af7b18ad648b9e69582473b1 100644 (file)
@@ -38,6 +38,8 @@ class DirSearch {
                        else
                                $extra_sql = "";
 
+                       $search .= "%";
+
                        $results = q("SELECT `contact`.`id` AS `cid`, `gcontact`.`url`, `gcontact`.`name`, `gcontact`.`nick`, `gcontact`.`photo`,
                                                        `gcontact`.`network`, `gcontact`.`keywords`, `gcontact`.`addr`, `gcontact`.`community`
                                                FROM `gcontact`
@@ -46,10 +48,10 @@ class DirSearch {
                                                        AND NOT `contact`.`pending` AND `contact`.`rel` IN ('%s', '%s')
                                                WHERE (`contact`.`id` > 0 OR (NOT `gcontact`.`hide` AND `gcontact`.`network` IN ('%s', '%s', '%s') AND
                                                ((`gcontact`.`last_contact` >= `gcontact`.`last_failure`) OR (`gcontact`.`updated` >= `gcontact`.`last_failure`)))) AND
-                                               (`gcontact`.`addr` REGEXP '%s' OR `gcontact`.`name` REGEXP '%s' OR `gcontact`.`nick` REGEXP '%s') $extra_sql
+                                               (`gcontact`.`addr` LIKE '%s' OR `gcontact`.`name` LIKE '%s' OR `gcontact`.`nick` LIKE '%s') $extra_sql
                                                        GROUP BY `gcontact`.`nurl`
                                                        ORDER BY `gcontact`.`nurl` DESC
-                                                       LIMIT 40",
+                                                       LIMIT 1000",
                                                intval(local_user()), dbesc(CONTACT_IS_SHARING), dbesc(CONTACT_IS_FRIEND),
                                                dbesc(NETWORK_DFRN), dbesc($ostatus), dbesc($diaspora),
                                                dbesc(escape_tags($search)), dbesc(escape_tags($search)), dbesc(escape_tags($search)));
index e34e409023dc5918905eb3373951a5ebddd71402..529aaaa5e6bf69d7aea319134786ca2df116f584 100644 (file)
@@ -508,6 +508,7 @@ function db_definition() {
                        "indexes" => array(
                                        "PRIMARY" => array("id"),
                                        "uid" => array("uid"),
+                                       "nurl" => array("nurl"),
                                        )
                        );
        $database["conv"] = array(
@@ -669,7 +670,9 @@ function db_definition() {
                                        ),
                        "indexes" => array(
                                        "PRIMARY" => array("id"),
-                                       "nurl" => array("nurl"),
+                                       "name" => array("name"),
+                                       "nick" => array("nick"),
+                                       "addr" => array("addr"),
                                        "updated" => array("updated"),
                                        )
                        );
index 0689aa19b33f726cf970200c61ac2690ca7f5add..b74edf7bbd98ce3acfb21df354bc5e64b7e8dab5 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1194 );
+define('UPDATE_VERSION' , 1195);
 
 /**
  *