Problem: Search.php liefert nur 10% Ergebnisse
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Problem: Search.php liefert nur 10% Ergebnisse
Beisiel: Ich habe etwa 95 Themen mit phpBB im Titel, wenn ich nun nach "phpBB" suchen lasse, erhalte ich 5 Ergebnisse (und die sogar ganz unterschiedlichen Datums)...
Bin inzwischen bei 2.0.14 angelangt und alles läuft...daher war mir jetzt nur diese Fehlfunktion der search.php aufgefallen beim testen...
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Portal die Suche Funktion benutze.
Gruß Stöbi
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Da hilft auch kein *
auch "man kann" bzw. "man kann *" mit diesen "" bringen kein Ergebnis bei mir.
Taucht aber bei mir auf.
Ich kann aber nach "morgens" suchen, ohne "". Das ergbit Treffer.
Hat ja auch mehr als 4 Buchstaben. Weiss nicht, ob ich das gut finden soll.
Sucheingaben wie "style mod" ergeben auch keine Treffer, obwohl beides
im Textkörper vorkommt. 3 und 4 Buchstaben eben nur.
Gerade die Suche nach Mod wird häufig verwendet.
Aber in vielen Foren bekommst du dann so "schlaue" Antworten wie "Bitte mehr als 3 Zeichen" angeben. :lol
Ja, ich weiss. Wir müssen alle Traffic sparen.
Ich frage mich dann allerdings, warum ich mir extra die Kohle ans Bein binde,
und mir Hoster mit unlimited Traffic ausgewählt habe.
Wer schon schön, wenn Treffer auch mit 3 Buchstaben Treffer ergeben würden.
Gruß Stöbi
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Und ob die eingebauten Mods
Daran schuld sind...Advanced IP Tools Pack
Password protected forums MOD
Es sei denn, der "Password protected forums MOD" würde die Suchlisten nicht für die betreffenden Foren aufbauen.
Du kannst aber auch mal den Suchindex neu erstellen. Nimm dazu den DB Maintenance Mod. Link, bzw. Download hier in der Hackliste, bzw. unter Downloads.
EDIT
@Stoebi
Ist es denn auch geschickt, Wörter wie "ist", "wir", "ihr", etc. zu indizieren? Bedenke, wie oft diese Worte (auch "mod") gepostet werden und wie groß dann der Suchindex in der Datenbank wird!
Ich spare ohne diese Worte rund 1/3 an Platz in den Search-Tabellen und die sind mittlerweile auch so schon über 13 MB groß!
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Würde mich freuen, wenn sich da mal einer einloggt (Account: Gast, Passwort: Gast):
http://support.schmidtedv.de
Nachtrag: Hab nun nochmal die search.php zurück auf 2.0.13 gesetzt...gleiches Problem....zudem für 2.0.14 patch von Thoul für search Back MOD von Niels eingebaut, MOD funktioniert wieder, aber Suche immernoch nicht....Gibt da auch zur Originalen 2.0.14 einige Code-Unterschiede die nicht nur von den MOD's herzukommen scheinen....Bittebittebitte, schau da nochmal einer drüber, bzw. ich kann diese differenzen auch posten, wenn nötig (ich vergleich Dateien mit Files comparer...)
Anbei die search.php mit patch von thoul....
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
An der search.php kann ich jedenfalls nichts finden...
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Zuerst immer meine version und dann die Stelle im Original...dazu auch noch 1-2 Fragen, weil auch ohne MOD da was unterschiedlich ist, seufz:
1.
Code: Alles auswählen
// Start replacement - Search back MOD
$search_id = ( isset($HTTP_GET_VARS['search_id']) ) ? $HTTP_GET_VARS['search_id'] : (($HTTP_POST_VARS['search_id'])? $HTTP_POST_VARS['search_id']:'');
// End replacement - Search back MODCode: Alles auswählen
$search_id = ( isset($HTTP_GET_VARS['search_id']) ) ? $HTTP_GET_VARS['search_id'] : '';
Code: Alles auswählen
if ( isset($HTTP_POST_VARS['search_fields']) )
{
$search_fields = ( $HTTP_POST_VARS['search_fields'] == 'all' ) ? 1 : ( ( $HTTP_POST_VARS['search_fields'] == 'msgonly' ) ? 0 : 2 );
}
else
{
$search_fields = 0;
}Code: Alles auswählen
if ( isset($HTTP_POST_VARS['search_fields']) )
{
$search_fields = ( $HTTP_POST_VARS['search_fields'] == 'all' ) ? 1 : 0;
}
else
{
$search_fields = 0;
}Code: Alles auswählen
if ( !empty($HTTP_POST_VARS['search_time']) || !empty($HTTP_GET_VARS['search_time']))
{
// Start replacement - Search back MOD
$search_time = time() - ( ( ( !empty($HTTP_POST_VARS['search_time']) ) ? intval($HTTP_POST_VARS['search_time']) : intval($HTTP_GET_VARS['search_time']) ) * 60 );
// End replacement - Search back MOD
$topic_days = (!empty($HTTP_POST_VARS['search_time'])) ? intval($HTTP_POST_VARS['search_time']) : intval($HTTP_GET_VARS['search_time']);
}Code: Alles auswählen
if ( !empty($HTTP_POST_VARS['search_time']) || !empty($HTTP_GET_VARS['search_time']))
{
$search_time = time() - ( ( ( !empty($HTTP_POST_VARS['search_time']) ) ? intval($HTTP_POST_VARS['search_time']) : intval($HTTP_GET_VARS['search_time']) ) * 86400 );
$topic_days = (!empty($HTTP_POST_VARS['search_time'])) ? intval($HTTP_POST_VARS['search_time']) : intval($HTTP_GET_VARS['search_time']);
}Code: Alles auswählen
else if ( $search_keywords != '' || $search_author != '' || $search_id || $search_ip != '' )
{
$store_vars = array('search_results', 'total_match_count', 'split_search', 'sort_by', 'sort_dir', 'show_results', 'return_chars');
$search_results = '';
//
// Search ID Limiter, decrease this value if you experience further timeout problems with searching forums
$limiter = 5000;
//
// Cycle through options ...
//
if ( $search_id == 'newposts' || $search_id == 'newtopics' || $search_id == 'egosearch' || $search_id == 'unanswered' || $search_keywords != '' || $search_author != '' || $search_id == 'usertopics' || $search_ip != '' )
{
if ( $search_id == 'newposts' || $search_id == 'newtopics' || $search_id == 'egosearch' || $search_id == 'usertopics' || ( $search_author != '' && $search_keywords == '' ) || $search_ip != '' )
{
if ( $search_id == 'newposts' )
{
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT post_id
FROM " . POSTS_TABLE . "
WHERE post_time >= " . (($search_time)? $search_time." AND post_time >= ":'' ).$userdata['user_lastvisit'];
}Code: Alles auswählen
else if ( $search_keywords != '' || $search_author != '' || $search_id )
{
$store_vars = array('search_results', 'total_match_count', 'split_search', 'sort_by', 'sort_dir', 'show_results', 'return_chars');
$search_results = '';
//
// Search ID Limiter, decrease this value if you experience further timeout problems with searching forums
$limiter = 5000;
//
// Cycle through options ...
//
if ( $search_id == 'newposts' || $search_id == 'egosearch' || $search_id == 'unanswered' || $search_keywords != '' || $search_author != '' )
{
if ( $search_id == 'newposts' || $search_id == 'egosearch' || ( $search_author != '' && $search_keywords == '' ) )
{
if ( $search_id == 'newposts' )
{
if ( $userdata['session_logged_in'] )
{
$sql = "SELECT post_id
FROM " . POSTS_TABLE . "
WHERE post_time >= " . $userdata['user_lastvisit'];
}Code: Alles auswählen
if ( !strstr($multibyte_charset, $lang['ENCODING']) )
{
$match_word = str_replace('*', '%', $split_search[$i]);
$search_match = ( $search_fields == 0 ) ? "w.word_text LIKE '$match_word' AND m.title_match = 0" : ( ( $search_fields == 1) ? "w.word_text LIKE '$match_word'" : "w.word_text LIKE '$match_word' AND m.title_match = 1" );
$sql = "SELECT m.post_id
FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m
WHERE " . $search_match . "
AND m.word_id = w.word_id
AND w.word_common <> 1";
}
else
{
$match_word = addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
$search_match = ( $search_fields == 0 ) ? "post_text LIKE '$match_word'" : ( ( $search_fields == 1) ? "post_text LIKE '$match_word' OR post_subject LIKE '$match_word'" : "post_subject LIKE '$match_word'" );
$sql = "SELECT post_id
FROM " . POSTS_TEXT_TABLE . "
WHERE " . $search_match;
}Code: Alles auswählen
if ( !strstr($multibyte_charset, $lang['ENCODING']) )
{
$match_word = str_replace('*', '%', $split_search[$i]);
$sql = "SELECT m.post_id
FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m
WHERE w.word_text LIKE '$match_word'
AND m.word_id = w.word_id
AND w.word_common <> 1
$search_msg_only";
}
else
{
$match_word = addslashes('%' . str_replace('*', '', $split_search[$i]) . '%');
$search_msg_only = ( $search_fields ) ? "OR post_subject LIKE '$match_word'" : '';
$sql = "SELECT post_id
FROM " . POSTS_TEXT_TABLE . "
WHERE post_text LIKE '$match_word'
$search_msg_only";
}Code: Alles auswählen
// Start code replacement - Password protected forums MOD
$passdata = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_fpass']) ) ? unserialize(stripslashes($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_fpass'])) : '';
$auth_sql = '';
if ( $search_forum != -1 )
{
$is_auth = auth(AUTH_ALL, $search_forum, $userdata);
$has_access = true;
if( !$is_auth['auth_mod'] && $userdata['user_level'] != ADMIN )
{
$sql = "SELECT forum_password FROM " . FORUMS_TABLE . " WHERE forum_id = " . $search_forum;
if( !$result = $db->sql_query($sql) )
{
message_die(GENERAL_ERROR, 'Could not retrieve forum password information', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
if( $row['forum_password'] != '' && $passdata[$key] != md5($row['forum_password']) )
{
$has_access = false;
}
}
if ( !$is_auth['auth_read'] || !$has_access )
// End code replacement - Password protected forums MODCode: Alles auswählen
$auth_sql = '';
if ( $search_forum != -1 )
{
$is_auth = auth(AUTH_READ, $search_forum, $userdata);
if ( !$is_auth['auth_read'] )Code: Alles auswählen
if ( $total_match_count )
{
// Start add - Search author topic starter MOD
$starter_from_sql = '';
$starter_where_sql = '';
if ($search_author != '')
{
$topic_starter = ( isset($HTTP_POST_VARS['topic_starter']) ) ? $HTTP_POST_VARS['topic_starter'] : '0';
if ( ($topic_starter == '1') && ($matching_userids != '') )
{
$starter_from_sql .= ', ' . TOPICS_TABLE . ' t';
$sql = "SELECT topic_id
FROM " . TOPICS_TABLE . "
WHERE topic_poster IN (" . $matching_userids . ")";
if ( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $search_author)", "", __LINE__, __FILE__, $sql);
}
$matching_topicids = '';
if ( $row = $db->sql_fetchrow($result) )
{
do
{
$matching_topicids .= ( ( $matching_topicids != '' ) ? ', ' : '' ) . $row['topic_id'];
}
while( $row = $db->sql_fetchrow($result) );
}
else
{
message_die(GENERAL_MESSAGE, $lang['No_search_match']);
}
$starter_where_sql .= ' AND p.topic_id IN (' . $matching_topicids . ') ';
}
}
// End add - Search author topic starter MOD
if ( $show_results == 'topics' )Code: Alles auswählen
if ( $total_match_count )
{
if ( $show_results == 'topics' )Code: Alles auswählen
if ( $auth_sql != '' )
{
$from_sql .= ", " . FORUMS_TABLE . " f";
$where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql";
}
$sql = "SELECT p.topic_id
FROM $from_sql $starter_from_sql
WHERE p.post_id IN (" . implode(", ", $search_id_chunks[$i]) . ")
$where_sql $starter_where_sql
GROUP BY p.topic_id";Code: Alles auswählen
if ( $auth_sql != '' )
{
$from_sql .= ", " . FORUMS_TABLE . " f";
$where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql";
}
$sql = "SELECT p.topic_id
FROM $from_sql
WHERE p.post_id IN (" . implode(", ", $search_id_chunks[$i]) . ")
$where_sql
GROUP BY p.topic_id";Code: Alles auswählen
$where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author'";
}
}
$sql = "SELECT " . $select_sql . "
FROM $from_sql $starter_from_sql
WHERE $where_sql $starter_where_sql";
if ( !($result = $db->sql_query($sql)) )Code: Alles auswählen
$where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author'";
}
$sql = "SELECT " . $select_sql . "
FROM $from_sql
WHERE $where_sql";
if ( !($result = $db->sql_query($sql)) )Code: Alles auswählen
$result_array = serialize_array($store_search_data);Code: Alles auswählen
$result_array = serialize($store_search_data);Code: Alles auswählen
$search_data = unserialize_array($row['search_array']);Code: Alles auswählen
$search_data = unserialize($row['search_array']);Code: Alles auswählen
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize_array($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize_array($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
Code: Alles auswählen
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();Code: Alles auswählen
// Start replacement - Search back MOD
$previous_days = array(0, 15,30,45,60,120,360, 720, 1440, 10080, 20160, 43200, 129600, 259200, 524160);
$previous_days_text = array($lang['All_Posts'],
$lang['15_min'],$lang['30_min'],$lang['45_min'],$lang['1_Hour'],$lang['2_Hour'],$lang['6_Hour'],$lang['12_Hour'],
$lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']);
// End replacement - Search back MODCode: Alles auswählen
$previous_days = array(0, 1, 7, 14, 30, 90, 180, 364);
$previous_days_text = array($lang['All_Posts'], $lang['1_Day'], $lang['7_Days'], $lang['2_Weeks'], $lang['1_Month'], $lang['3_Months'], $lang['6_Months'], $lang['1_Year']);
Ansonsten wie gesagt, oben immer mein Code unten das 2.0.14-Original...ich hoffe, dieser lange Post ist nicht zu unverschämt :-)
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
Allerdings ist das vor dem Passwort Protect Forums MOD gewesen (können die sich wegen Verschlüsselung stören, oder hab ich da was falsch verstanden in dem Post von Cyberalien über die serialize-Funktion?)...
Achja, Fragen über Fragen wegen einer blöden Datei...murks...bisher ist aber alles soooo gut gelaufen mit dem MOD-Verbau und dem Style, den ich nutze...da wäre es echt schade keine Lösung zu finden...bzw. man kann schon nach der ein oder anderen Sache suchen....aber irgendwie halt net richtig erfolgreich....schnüff
Desweiteren hab ich beim Password Protected Forums Code mal
if( !$result = $db->sql_query($sql) )
in
if ( !($result = $db->sql_query($sql)) )
geändert....sah mir falsch aus mit codevergleich ähnlicher Originalstelle darüber (ich hoffe, das stimmt so). zudem 1 oder 2 Leerzeichen noch hinzugefügt bzw. gelöscht an anderer Stelle und ein elseif in else if geändert...aber alles bisher ohne Erfolg...
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ist nirgends beschrieben
Code: Alles auswählen
if( !$result = $db->sql_query($sql) )Code: Alles auswählen
if ( !($result = $db->sql_query($sql)) )Ansonsten wüsste ich nicht, was daran weiter falsch sein sollte...
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten:
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Hast Du denn die Befehle ausgetauscht und immer noch nicht das korrekte Suchergebnis?
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
-
schmidtedv
- Beiträge: 607
- Registriert: So 13.Feb, 2005 10:46
- Wohnort: St. Blasien (seit 01.06)
- Kontaktdaten: