]> git.mxchange.org Git - friendica.git/commitdiff
Speed optimisation by enabling the posibility of the MySQL fulltext engine
authorMichael Vogel <icarus@dabo.de>
Sat, 26 May 2012 01:21:07 +0000 (03:21 +0200)
committerMichael Vogel <icarus@dabo.de>
Sat, 26 May 2012 01:21:07 +0000 (03:21 +0200)
htconfig.php
include/api.php
include/dba.php
mod/network.php
mod/search.php

index 872572654a705cec36d5f39d43353d4f7fd64209..2c5658be4dc5fdb9f5ad812fa0668b9a6bb453de 100644 (file)
@@ -88,3 +88,6 @@ $a->config['system']['itemcache'] = "";
 
 // If enabled, the lockpath is used for a lockfile to check if the poller is running
 $a->config['system']['lockpath'] = "";
+
+// If enabled, the MyBB fulltext engine is used
+$a->config['system']['use_fulltext_engine'] = true;
index f58a91a72f48224616e09ee047014a304d63de7c..5697fbdbcb881c35365cdacbb525a43fa120ec76 100644 (file)
                $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
                $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
                //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
-               
+
                $start = $page*$count;
 
                //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false);
                $myurl = substr($myurl,strpos($myurl,'://')+3);
                $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
                $diasp_url = str_replace('/profile/','/u/',$myurl);
-               $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` regexp '%s' or `tag` regexp '%s' or tag regexp '%s' )) ",
-                       dbesc($myurl . '$'),
-                       dbesc($myurl . '\\]'),
-                       dbesc($diasp_url . '\\]')
-               );
+
+               if (get_config('system','use_fulltext_engine'))
+                        $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
+                                dbesc(protect_sprintf($myurl)),
+                                dbesc(protect_sprintf($myurl)),
+                                dbesc(protect_sprintf($diasp_url))
+                        );
+                else
+                        $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
+                                dbesc(protect_sprintf('%' . $myurl)),
+                                dbesc(protect_sprintf('%' . $myurl . '\\]%')),
+                                dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                        );
 
                if ($max_id > 0)
                        $sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
index 7ecce7270446308126303afd6949362d913973ce..c19d4a8fc94b2b30272d4037c90d0ec91fb5828c 100644 (file)
@@ -77,14 +77,14 @@ class dba {
 
                $this->error = '';
 
-               //@file_put_contents("/tmp/friendica-db.log", datetime_convert().':'.session_id(). ' Start '.$sql."\n", FILE_APPEND);
+               @file_put_contents("/tmp/friendica-db.log", datetime_convert().':'.session_id(). ' Start '.$sql."\n", FILE_APPEND);
 
                if($this->mysqli)
                        $result = @$this->db->query($sql);
                else
                        $result = @mysql_query($sql,$this->db);
 
-               //@file_put_contents("/tmp/friendica-db.log", datetime_convert().':'.session_id(). ' Stop '."\n", FILE_APPEND);
+               @file_put_contents("/tmp/friendica-db.log", datetime_convert().':'.session_id(). ' Stop '."\n", FILE_APPEND);
 
                if($this->mysqli) {
                        if($this->db->errno)
index c6f683b935f4ac8374edea125df9a0de2c759761..f54d055d385343597631943bc78f0b2a2a3a4714 100644 (file)
@@ -416,11 +416,19 @@ function network_content(&$a, $update = 0) {
                $myurl = substr($myurl,strpos($myurl,'://')+3);
                $myurl = str_replace(array('www.','.'),array('','\\.'),$myurl);
                $diasp_url = str_replace('/profile/','/u/',$myurl);
-               $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
-                       dbesc(protect_sprintf('%' . $myurl)),
-                       dbesc(protect_sprintf('%' . $myurl . '\\]%')),
-                       dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
-               );
+               if (get_config('system','use_fulltext_engine'))
+                       $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where (MATCH(`author-link`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(`tag`) AGAINST ('".'"%s"'."' in boolean mode) or MATCH(tag) AGAINST ('".'"%s"'."' in boolean mode))) ",
+                               dbesc(protect_sprintf($myurl)),
+                               dbesc(protect_sprintf($myurl)),
+                               dbesc(protect_sprintf($diasp_url))
+                       );
+               else
+                       $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
+                               dbesc(protect_sprintf('%' . $myurl)),
+                               dbesc(protect_sprintf('%' . $myurl . '\\]%')),
+                               dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                       );
+
        }
 
 
index 3e6bf68aa679c96c1aaaa3507e3c00cc261e3ae3..ac51346963bbde408520a8b8168fb0206b04c2c1 100644 (file)
@@ -109,11 +109,17 @@ function search_content(&$a) {
        if(! $search)
                return $o;
 
-       if($tag)
-               $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . preg_quote($search) . '\\['));
-       else
-               $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
-
+       if (get_config('system','use_fulltext_engine')) {
+               if($tag)
+                       $sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.preg_quote($search));
+               else
+                       $sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(preg_quote($search)));
+       } else {
+               if($tag)
+                       $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . preg_quote($search) . '\\['));
+               else
+                       $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
+       }