Suche nach Wörtern mit 3 Buchstaben (z.B. mp3)

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
likeatim
Mitglied
Beiträge: 28
Registriert: 26.05.2003 11:48

Suche nach Wörtern mit 3 Buchstaben (z.B. mp3)

Beitrag von likeatim »

Ich bekomme es nicht hin, dass ich in meinem Board nach Wörtern mit weniger als 4 Buchstaben suchen kann (z.B. mp3).
Fatal ist auch, dass ich dann auch nicht die Kombinationen funktionieren (z.B. mp3 AND umwandeln).
Ich hab mich schon mal in der functions_search.php umgeschaut (in der Nähe von Zeile 60: "'words' that consist of <3 or >20 characters are removed"), aber eine Veränderung der Werte bringt nix....
liegt es vielleicht an phpBB 2.05?
In Version 2.04 sah die betreffende Stelle so aus:

Code: Alles auswählen

	if ( $mode == 'post' )
	{
		$entry = str_replace('*', ' ', $entry);

		// 'words' that consist of <3 or >20 characters are removed.
		$entry = preg_replace('/\b([a-z0-9]{1,2}|[a-z0-9]{21,})\b/',' ', $entry); 
	}
In Verrsion 2.05 sieht es jetzt so aus:

Code: Alles auswählen

	if ( $mode == 'post' )
	{
		$entry = str_replace('*', ' ', $entry);

		// 'words' that consist of <3 or >20 characters are removed.
		$entry = explode(' ', $entry);
		for ($i = 0; $i < sizeof($entry); $i++)
		{
			$entry[$i] = trim($entry[$i]);
			if ((strlen($entry[$i]) < 3) || (strlen($entry[$i]) > 20))
			{
				$entry[$i] = '';
			}
		}
		$entry = implode(' ', $entry);
	}
oder hat es was mit der funktion stopword_list zu tun? was macht die eigentlich?

Danke für die Hilfe!
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Hast du.. nachdem du die Werte geändert hast ..nochma einen Beitrag mit solch einem 3-Zeichen-Wort geschrieben ? Denn z.B. "mp3" muss natürlich erstma in der search Tabelle gespeichert werden.
oder hat es was mit der funktion stopword_list zu tun? was macht die eigentlich?
..eigentlich nicht. Was sie macht? s. dieses Thema
likeatim
Mitglied
Beiträge: 28
Registriert: 26.05.2003 11:48

Beitrag von likeatim »

cool, mit dem neuen Beitrag geht's.
Und wie bekomme ich die alten Beiträge in die Suche? Muss ich dann den Suchindex neu erstellen und wie geht das?
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

Such ma hier im Forum oder auf www.phpbbhacks.com nach "Rebuild Search Index".
hope
Mitglied
Beiträge: 16
Registriert: 27.02.2003 14:15

Beitrag von hope »

Hi,

hier ein Änderung für alle die bestimmte kurze Wörter oder Zahlen indezieren möchten. functions_search.php ab ca. Zeile 61

Code: Alles auswählen

             
                 {
         $entry = str_replace('*', ' ', $entry);

        // 'words' that consist of <3 or >20 characters are removed.
        $entry = explode(' ', $entry);
        for ($i = 0; $i < sizeof($entry); $i++)
            {
             $entry[$i] = trim($entry[$i]);
             $found = '0';
             $searchshorty = array( 'a3','z3','F8','A7' );
             for ($b = 0; $b < count($searchshorty);$b++)
             {
                if ( $entry[$i] == $searchshorty[$b])
                        {
                        $found = '1';
                        }
             }
             if ( $found == '0')
             {
                if ((strlen($entry[$i]) < 3) || (strlen($entry[$i]) > 20))
                        {
                        $entry[$i] = '';
                        }
             }
          }
       $entry = implode(' ', $entry);
   }

Es ist nicht super professionell aber es funktioniert.

Gruss
Deniz
likeatim
Mitglied
Beiträge: 28
Registriert: 26.05.2003 11:48

Beitrag von likeatim »

hope hat geschrieben:Hi,

hier ein Änderung für alle die bestimmte kurze Wörter oder Zahlen indezieren möchten. functions_search.php ab ca. Zeile 61

Code: Alles auswählen

             
                 {
         $entry = str_replace('*', ' ', $entry);

        // 'words' that consist of <3 or >20 characters are removed.
        $entry = explode(' ', $entry);
        for ($i = 0; $i < sizeof($entry); $i++)
            {
             $entry[$i] = trim($entry[$i]);
             $found = '0';
             $searchshorty = array( 'a3','z3','F8','A7' );
             for ($b = 0; $b < count($searchshorty);$b++)
             {
                if ( $entry[$i] == $searchshorty[$b])
                        {
                        $found = '1';
                        }
             }
             if ( $found == '0')
             {
                if ((strlen($entry[$i]) < 3) || (strlen($entry[$i]) > 20))
                        {
                        $entry[$i] = '';
                        }
             }
          }
       $entry = implode(' ', $entry);
   }

Es ist nicht super professionell aber es funktioniert.

Gruss
Deniz
kannst du den Unterschied zum "Werkscode" ein bisschen erklären?
hope
Mitglied
Beiträge: 16
Registriert: 27.02.2003 14:15

Beitrag von hope »

im Prinzip wird in

Code: Alles auswählen

searchshorty = array( 'a3','z3','F8','A7' ); 
definiert welche Begriffe indeziert werden sollen die weniger als 3 Zeichen haben.

danach wird eine for-schleife durchlaufen die den eintrag mit dem Array vergleicht und beim matchen found auf '1' setzt. wenn found bei einem Durchlauf nicht auf 1 gesetzt ist, dann wird die Standard-Abfrage benutzt um wörter zwischen 3 und 20 Buchstaben zu indezieren. Es ist möglich das bei grossen Posts diese funktion lange dauert, da gab es ja schon Beiträge zu dem Problem, da die Schleife:

Code: Alles auswählen

for ($i = 0; $i < sizeof($entry); $i++) 
            { 
ja auch lange dauert und empfohlen wird abzuändern.

vielleicht gibt es einen eleganteren Vergleich, aber meine php-Kenntnisse reichen dafür nicht aus.[/code]
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“