Seite 1 von 1

Suche nur im Titel möglich

Verfasst: 27.06.2006 10:40
von PhoenixDH
Gibt es da einen Mod der es ermöglicht, bei einer Suche nur auszuwählen dass man im Titel suchen möchte?

Denn im Moment ist ja nur Titel + Text oder nur Text möglich!

Verfasst: 27.06.2006 11:03
von Markus67
Hi ...

schau mal hier rein :wink:
Search Topic Title Only
Allows you to add a function to your search page, which will allow your users to search only the topic title.

Markus

Verfasst: 27.06.2006 12:26
von PhoenixDH
Dank dir, werds testen!

Verfasst: 13.11.2006 23:44
von FritzM
Hallo,

also ich finde diesen "MOD" ja verdammt wichtig und meiner Meinung ach sollte er grundsätzlich in das phpBB-Forum integriert werden, denn gerade wenn es mehrere hundert oder tausend Beiträge gibt, kann man mit der "Nur Titel"-Suche die Antworten schneller und einfacher finden!

Hab bei mir im Portal die Suche einbaut...

So wie ich das sehe, ist das aber jetzt eine "Nur Text"-Suche... :cry:

Wenn ich nämlich z. B. bei mir nach dem Stichwort "Internet" Suche, müsste ja eigentlich der Beitrag "Internet Explorer 7.x & Media Player 11 - BETA Versionen" erscheinen.
Der kommt aber nicht! :cry:
Stattdessen zeigt er als Suchergebnis den Beitrag "Fluch der Karibik" an, und hebt darin den Link zur "Internet Movie Database - Fluch der Karibik" hervor...

Irgendwas stimmt da also noch net so richtig!
Ausserdem hätte ich gern, dass der Radio-Button für die "Nur Titel"-Suche vorausgewählt ist.

Kann da bitte jemand helfen? :oops: :oops: :oops:

Verfasst: 15.11.2006 17:19
von FritzM
*schieb* :oops:

Kann bitte jemand helfen?

Finde den MOD ziemlich wichtig, hab aber nirgends nähere Infos darüber bekommen, was ich noch ändern könnte...

Viele Grüsse
Fritz

Verfasst: 16.11.2006 22:20
von FritzM
*schieb* 8)

Ok, ich probier's nochmal... :oops:

Ich glaub, es liegt möglicherweise an der search.php.
Weiss jemand, woran es liegt? Schätze mal, folgender Code muss da angepasst werden:

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;
						}
Das war zumindest der Part, den man ändern musste...

Kann jemand helfen, der sich Code-Programmierung auskennt?

Wär echt supergeil! ... :cry: :cry:

Verfasst: 19.11.2006 13:23
von FritzM
Hallo Leute!

*schieb*

Ich geb immer noch net auf... :P

Hab mich jetzt selbst etwas mit dem Problem befasst und versucht, das Ganze mit Logik zu lösen, da ich mich ja mit der Programmiersprache leider überhaupt net auskenne... :cry:

Zu folgendem Ergebnis bin ich mittlerweile gekommen:

In der search.php steht nach der Änderung:

Code: Alles auswählen

$search_fields = ( $HTTP_POST_VARS['search_fields'] == 'all' ) ? 1 : ( ( $HTTP_POST_VARS['search_fields'] == 'msgonly' ) ? 0 : 2 );
Das bedeutet doch, dass die Variable $search_fiedls bei einer "Nur-Titel-Suche" den Wert 2 hat, oder?

Also hab ich daraufhin die Zeile

Code: Alles auswählen

							$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";
wie folgt abgeändert:

Code: Alles auswählen

							$match_word = str_replace('*', '%', $split_search[$i]);
							$search_match = ( $search_fields == 2 ) ? "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";
Aus der 0 also eine 2.

Bin mir zwar überhaupt net um die Auswirkungen bewußt, aber:
Es scheint zu funktionieren! :D :D :D

Problem:
In der Suchmaske hat nun auch die Funktion "Nur Nachrichtentext durchsuchen" die "Nur-Titel"-Suchfunktion und bringt das gleiche Ergebnis...

Was muss man da noch ändern, damit das auch funktioniert?

Wenn das mal funktionieren würde, wär das super-geil, weil man dann gezielter nach Themen suchen könnte und nicht jeden Beitrag bekommt, wo irgendwann mal die gesuchten Wörter zufällig genannt werden...

Wär auch für phpbb nicht schlecht, da hier ja immer auf die Suchfunktion verwiesen wird, die grundsätzlich aber viel zu viele Ergebnisse bringt, die auch größtenteils unbrauchbar sind, weil die gesuchten Wörter im Nachrichtentext nicht das gesuchte Problem wiederspiegeln. Die normale Suchfunktion ist daher m. E. sehr mangelhaft...


EDIT:
Bin übrigens gerade draufgekommen, wie man die "Vorauswahl" auf die Nur-Titel-Suche ändert! *stolz* :D

Code: Alles auswählen

<td class="row2" valign="middle"><span class="genmed"><select class="post" name="search_time">{S_TIME_OPTIONS}</select><br /><input type="radio" name="search_fields" value="all" checked="checked" /> {L_SEARCH_MESSAGE_TITLE}<br /><input type="radio" name="search_fields" value="msgonly" /> {L_SEARCH_MESSAGE_ONLY}<br /><input type="radio" name="search_fields" value="titleonly" /> {L_SEARCH_TITLE_ONLY}</span></td>
umändern in

Code: Alles auswählen

<td class="row2" valign="middle"><span class="genmed"><select class="post" name="search_time">{S_TIME_OPTIONS}</select><br /><input type="radio" name="search_fields" value="all" /> {L_SEARCH_MESSAGE_TITLE}<br /><input type="radio" name="search_fields" value="msgonly" /> {L_SEARCH_MESSAGE_ONLY}<br /><input type="radio" name="search_fields" value="titleonly" checked="checked" /> {L_SEARCH_TITLE_ONLY}</span></td>

Verfasst: 20.11.2006 17:52
von FritzM
Immer noch wichtig...

*schieb* :oops: :oops: :oops: