1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-08-07 01:06:48 +02:00

- correctly use DISTINCT and GROUP BY in search related SQL [Bug #1256]

- always display views and replies in search results [Bug #1223]
- display error messages occuring during search index creation/deletion [Bug #1274]
- correctly align the ACP link on the search results page [Bug #1160]
- fixed the search forum box [Bug #1300] and added a search topic box (subBlue: can you please position this a little more visible, didn't want to mess with the CSS ;-))
- correctly check and use show_results on the search page


git-svn-id: file:///svn/phpbb/trunk@5727 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Nils Adermann
2006-03-26 01:36:26 +00:00
parent ed32b4d8dc
commit 8a32e0de74
9 changed files with 81 additions and 59 deletions

View File

@@ -40,7 +40,7 @@ class fulltext_mysql extends search_backend
}
/**
* Checks for correct MySQL version and stores max/min word length in the config
* Checks for correct MySQL version and stores min/max word length in the config
*/
function init()
{
@@ -61,13 +61,19 @@ class fulltext_mysql extends search_backend
}
$result = $db->sql_query('SHOW TABLE STATUS LIKE \'' . POSTS_TABLE . '\'');
$engine = $db->sql_fetchfield('Engine', 0, $result);
if (!$engine)
{
$engine = $db->sql_fetchfield('Type', 0, $result);
}
$info = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
$engine = '';
if (isset($info['Engine']))
{
$engine = $info['Engine'];
}
else if (isset($info['Type']))
{
$engine = $info['Type'];
}
if ($engine != 'MyISAM')
{
return $user->lang['FULLTEXT_MYSQL_NOT_MYISAM'];
@@ -160,7 +166,7 @@ class fulltext_mysql extends search_backend
}
/**
* Turns text into an array of words that can be stored in the word list table
* Turns text into an array of words
*/
function split_message($text)
{
@@ -618,9 +624,10 @@ class fulltext_mysql extends search_backend
{
global $db;
if (strpos(SQL_LAYER, 'mysql') === false)
// Make sure we can actually use MySQL with fulltext indexes
if ($error = $this->init())
{
return $user->lang['FULLTEXT_MYSQL_INCOMPATIBLE_VERSION'];
return $error;
}
if (!is_array($this->stats))
@@ -648,9 +655,10 @@ class fulltext_mysql extends search_backend
{
global $db;
if (strpos(SQL_LAYER, 'mysql') === false)
// Make sure we can actually use MySQL with fulltext indexes
if ($error = $this->init())
{
return $user->lang['FULLTEXT_MYSQL_INCOMPATIBLE_VERSION'];
return $error;
}
if (!is_array($this->stats))
@@ -706,6 +714,12 @@ class fulltext_mysql extends search_backend
{
global $db;
if (strpos(SQL_LAYER, 'mysql') === false)
{
$this->stats = array();
return;
}
$sql = 'SHOW INDEX
FROM ' . POSTS_TABLE;
$result = $db->sql_query($sql);

View File

@@ -405,15 +405,15 @@ class fulltext_phpbb extends search_backend
if ($sql_in)
{
$sql = "SELECT $sql_select, COUNT(DISTINCT m.word_id) as matches
$sql = "SELECT $sql_select, COUNT(DISTINCT m.word_id) as matches, " . $sort_by_sql[$sort_key] . "
FROM $sql_from$sql_sort_table" . POSTS_TABLE . ' p, ' . SEARCH_MATCH_TABLE . ' m, ' . SEARCH_WORD_TABLE . " w
WHERE w.word_text IN ($sql_in)
AND m.word_id = w.word_id
AND w.word_common <> 1
AND p.post_id = m.post_id
$sql_where_options
GROUP BY $field
ORDER BY $sql_sort";
GROUP BY $field, " . $sort_by_sql[$sort_key] . '
ORDER BY ' . $sql_sort;
$result = $db->sql_query($sql);
if (!($row = $db->sql_fetchrow($result)))
@@ -689,8 +689,8 @@ class fulltext_phpbb extends search_backend
AND t.topic_id = p.topic_id
$sql_sort_join
$sql_time
GROUP BY t.topic_id
ORDER BY $sql_sort";
GROUP BY t.topic_id, " . $sort_by_sql[$sort_key] . '
ORDER BY ' . $sql_sort;
$field = 'topic_id';
}