From: Michael Vogel Date: Tue, 18 Mar 2014 21:51:50 +0000 (+0100) Subject: Search with tags now works fast. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=9877e43bdaae58f01cb61520e19ec22201eadbcb;p=friendica.git Search with tags now works fast. --- diff --git a/include/notifier.php b/include/notifier.php index afe65aa02e..ea2f5e75c4 100644 --- a/include/notifier.php +++ b/include/notifier.php @@ -241,31 +241,31 @@ function notifier_run(&$argv, &$argc){ // if $parent['wall'] == 1 we will already have the parent message in our array // and we will relay the whole lot. - + // expire sends an entire group of expire messages and cannot be forwarded. - // However the conversation owner will be a part of the conversation and will + // However the conversation owner will be a part of the conversation and will // be notified during this run. // Other DFRN conversation members will be alerted during polled updates. // Diaspora members currently are not notified of expirations, and other networks have - // either limited or no ability to process deletions. We should at least fix Diaspora + // either limited or no ability to process deletions. We should at least fix Diaspora // by stringing togther an array of retractions and sending them onward. - - + + $localhost = str_replace('www.','',$a->get_hostname()); if(strpos($localhost,':')) $localhost = substr($localhost,0,strpos($localhost,':')); /** * - * Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes - * have been known to cause runaway conditions which affected several servers, along with - * permissions issues. + * Be VERY CAREFUL if you make any changes to the following several lines. Seemingly innocuous changes + * have been known to cause runaway conditions which affected several servers, along with + * permissions issues. * */ - + $relay_to_owner = false; if((! $top_level) && ($parent['wall'] == 0) && (! $expire) && (stristr($target_item['uri'],$localhost))) { @@ -274,8 +274,8 @@ function notifier_run(&$argv, &$argc){ if(($cmd === 'uplink') && (intval($parent['forum_mode']) == 1) && (! $top_level)) { - $relay_to_owner = true; - } + $relay_to_owner = true; + } // until the 'origin' flag has been in use for several months // we will just use it as a fallback test @@ -452,7 +452,7 @@ function notifier_run(&$argv, &$argc){ $photos[$p['scale']] = $a->get_baseurl().'/photo/'.$p['resource-id'].'-'.$p['scale'].'.'.$ext[$p['type']]; } unset($rp, $ext); - + $atom .= replace_macros($sugg_template, array( '$name' => xmlify($owner['name']), '$photo' => xmlify($photos[4]), @@ -577,12 +577,12 @@ function notifier_run(&$argv, &$argc){ // This controls the number of deliveries to execute with each separate delivery process. // By default we'll perform one delivery per process. Assuming a hostile shared hosting // provider, this provides the greatest chance of deliveries if processes start getting - // killed. We can also space them out with the delivery_interval to also help avoid them + // killed. We can also space them out with the delivery_interval to also help avoid them // getting whacked. - // If $deliveries_per_process > 1, we will chain this number of multiple deliveries - // together into a single process. This will reduce the overall number of processes - // spawned for each delivery, but they will run longer. + // If $deliveries_per_process > 1, we will chain this number of multiple deliveries + // together into a single process. This will reduce the overall number of processes + // spawned for each delivery, but they will run longer. $deliveries_per_process = intval(get_config('system','delivery_batch_count')); if($deliveries_per_process <= 0) @@ -597,8 +597,8 @@ function notifier_run(&$argv, &$argc){ continue; // potentially more than one recipient. Start a new process and space them out a bit. - // we will deliver single recipient types of message and email recipients here. - + // we will deliver single recipient types of message and email recipients here. + if((! $mail) && (! $fsuggest) && (!$relocate) && (! $followup)) { $this_batch[] = $contact['id']; diff --git a/mod/search.php b/mod/search.php index c7387c5165..00f379a75c 100644 --- a/mod/search.php +++ b/mod/search.php @@ -130,8 +130,8 @@ function search_content(&$a) { if($tag) { $sql_extra = ""; - $sql_table = sprintf("`item` INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d AND `uid` = %d ORDER BY `tid` DESC) AS `term` ON `item`.`id` = `term`.`oid` ", - dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG), intval(local_user())); + $sql_table = sprintf("`item` INNER JOIN (SELECT `oid` FROM `term` WHERE `term` = '%s' AND `otype` = %d AND `type` = %d) AS `term` ON `item`.`id` = `term`.`oid` ", + dbesc(protect_sprintf($search)), intval(TERM_OBJ_POST), intval(TERM_HASHTAG)); $sql_order = "`item`.`id`"; } else { @@ -141,7 +141,8 @@ function search_content(&$a) { $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search)))); } $sql_table = "`item`"; - $sql_order = "`item`.`received`"; + $sql_order = "`item`.`id`"; + //$sql_order = "`item`.`received`"; } // Here is the way permissions work in the search module... @@ -171,7 +172,7 @@ function search_content(&$a) { } } - $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, + $r = q("SELECT `item`.`uri`, `item`.*, `item`.`id` AS `item_id`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`, @@ -182,7 +183,7 @@ function search_content(&$a) { WHERE `item`.`visible` = 1 AND `item`.`deleted` = 0 and `item`.`moderated` = 0 AND (( `item`.`allow_cid` = '' AND `item`.`allow_gid` = '' AND `item`.`deny_cid` = '' AND `item`.`deny_gid` = '' AND `item`.`private` = 0 AND `user`.`hidewall` = 0 ) OR ( `item`.`uid` = %d )) - $sql_extra + $sql_extra GROUP BY `item`.`uri` ORDER BY $sql_order DESC LIMIT %d , %d ", intval(local_user()), intval($a->pager['start']),