aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/search
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2009-04-11 11:09:45 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2009-04-11 11:09:45 +0000
commit4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf (patch)
treec2c98e5c550b9a9e3b19a0e9d6332437b453da26 /phpBB/includes/search
parentcda9e5e9ec0dfe9c3e0a04809ffc5d0099020046 (diff)
downloadforums-4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf.tar
forums-4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf.tar.gz
forums-4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf.tar.bz2
forums-4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf.tar.xz
forums-4d9b106db2ccc6e15b4afd3fc2e69cf37fae81cf.zip
New search option: Maximum number of words allowed to search for.
(the more words the more database load) git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@9438 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/search')
-rw-r--r--phpBB/includes/search/fulltext_mysql.php8
-rw-r--r--phpBB/includes/search/fulltext_native.php11
2 files changed, 16 insertions, 3 deletions
diff --git a/phpBB/includes/search/fulltext_mysql.php b/phpBB/includes/search/fulltext_mysql.php
index 2a67b58246..e1e7951367 100644
--- a/phpBB/includes/search/fulltext_mysql.php
+++ b/phpBB/includes/search/fulltext_mysql.php
@@ -118,7 +118,7 @@ class fulltext_mysql extends search_backend
*/
function split_keywords(&$keywords, $terms)
{
- global $config;
+ global $config, $user;
if ($terms == 'all')
{
@@ -167,6 +167,12 @@ class fulltext_mysql extends search_backend
$this->split_words = $matches[1];
}
+ // We limit the number of allowed keywords to minimize load on the database
+ if ($config['max_num_search_keywords'] && sizeof($this->split_words) > $config['max_num_search_keywords'])
+ {
+ trigger_error($user->lang('MAX_NUM_SEARCH_KEYWORDS_REFINE', $config['max_num_search_keywords'], sizeof($this->split_words)));
+ }
+
// to allow phrase search, we need to concatenate quoted words
$tmp_split_words = array();
$phrase = '';
diff --git a/phpBB/includes/search/fulltext_native.php b/phpBB/includes/search/fulltext_native.php
index 1c6a64d07c..ee36039454 100644
--- a/phpBB/includes/search/fulltext_native.php
+++ b/phpBB/includes/search/fulltext_native.php
@@ -167,6 +167,13 @@ class fulltext_native extends search_backend
);
$keywords = preg_replace($match, $replace, $keywords);
+ $num_keywords = sizeof(explode(' ', $keywords));
+
+ // We limit the number of allowed keywords to minimize load on the database
+ if ($config['max_num_search_keywords'] && $num_keywords > $config['max_num_search_keywords'])
+ {
+ trigger_error($user->lang('MAX_NUM_SEARCH_KEYWORDS_REFINE', $config['max_num_search_keywords'], $num_keywords));
+ }
// $keywords input format: each word separated by a space, words in a bracket are not separated
@@ -693,7 +700,7 @@ class fulltext_native extends search_backend
$sql_where[] = 'f.forum_id = p.forum_id';
break;
}
-
+
if ($left_join_topics)
{
$sql_array['LEFT_JOIN'][$left_join_topics] = array(
@@ -1110,7 +1117,7 @@ class fulltext_native extends search_backend
// Get unique words from the above arrays
$unique_add_words = array_unique(array_merge($words['add']['post'], $words['add']['title']));
-
+
// We now have unique arrays of all words to be added and removed and
// individual arrays of added and removed words for text and title. What
// we need to do now is add the new words (if they don't already exist)