From: Michael Vogel Date: Sun, 17 Apr 2016 11:46:49 +0000 (+0200) Subject: Speeding up the gcontact search X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=017bfe17f83fdadb64ac89108a9a4f9c9900fc73;p=friendica.git Speeding up the gcontact search --- diff --git a/boot.php b/boot.php index 58b4bc0983..13cc2aaf5b 100644 --- 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. diff --git a/database.sql b/database.sql index 89b821e23a..cf003da2a8 100644 --- a/database.sql +++ b/database.sql @@ -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; diff --git a/include/DirSearch.php b/include/DirSearch.php index 99a0698d46..5968608236 100644 --- a/include/DirSearch.php +++ b/include/DirSearch.php @@ -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))); diff --git a/include/dbstructure.php b/include/dbstructure.php index e34e409023..529aaaa5e6 100644 --- a/include/dbstructure.php +++ b/include/dbstructure.php @@ -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"), ) ); diff --git a/update.php b/update.php index 0689aa19b3..b74edf7bbd 100644 --- a/update.php +++ b/update.php @@ -1,6 +1,6 @@