Wörter für den Suchindex explizit zulassen?
Forumsregeln
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!
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!
Wörter für den Suchindex explizit zulassen?
Man kann ja Wörter vom Suchindex ausschließen, alleine auch durch das setzen von minimaler und maximaler Zeichenlänge. Ist es auch Möglich, einzelne Wörter für den Index explizit zuzulassen, falls sie direkt in die angaben für minimale oder maximale Zeichenlänge reinrutschen?
Zuletzt geändert von Scotty am Mi 05.Okt, 2005 12:17, insgesamt 1-mal geändert.
Scotty's Stubentiger-Forum - Miau
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
Grundsätzlich machbar. Aber dafür bräuchte man ein wenig Zeit und ausreichende Kenntnisse über den zuständigen Code.
(Beides habe ich momentan nicht.)
(Beides habe ich momentan nicht.)
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
Vielleicht gibt’s da ja auch nen MOD, ich weiß hier ja nicht mal nach was ich da genau suchen müsste, ist ja eh alles auf englisch.
Scotty's Stubentiger-Forum - Miau
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Also anstelle einer Stopliste eine "Goliste"...
Hm, sollte nicht sooo schwer sein.
Ich schau mal die Tage nach...
Hm, sollte nicht sooo schwer sein.
Ich schau mal die Tage nach...
Karsten Ude
-={ 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!
-={ 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!
Thx 
[quote="oxpus - Mi 05.Okt, 2005 15:21";p="45196"]Also anstelle einer Stopliste eine "Goliste"...
Hm, sollte nicht sooo schwer sein.[/quote]
Eher beides, weiß auch nicht. So eine Goliste
wäre aber für meinen fall eher besser. Leider ist es ja so, das der Suchindex eher mit belanglosen Wörtern gefüllt wird, die wahrscheinlich nie einer eingibt und das verbraucht nur unnütz Speicher.
Kenn das nur von anderen Systemen, da kann man die minimale und maximale Zeichenlänge einstellen, Wörter ausschließen und eben auch Wörter eindeutig zulassen. Keine Ahnung wie das dann im phpBB3 mal geregelt wird, in der CVS ist das ja noch nicht erkennbar.
[quote="oxpus - Mi 05.Okt, 2005 15:21";p="45196"]Also anstelle einer Stopliste eine "Goliste"...
Hm, sollte nicht sooo schwer sein.[/quote]
Eher beides, weiß auch nicht. So eine Goliste
Kenn das nur von anderen Systemen, da kann man die minimale und maximale Zeichenlänge einstellen, Wörter ausschließen und eben auch Wörter eindeutig zulassen. Keine Ahnung wie das dann im phpBB3 mal geregelt wird, in der CVS ist das ja noch nicht erkennbar.
Scotty's Stubentiger-Forum - Miau
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Also im phpBB2 kannst Du eine Datei "search_stopwords.txt" in den Ordner lang_... einstellen, in der alle Wörter enthalten sind, die im Suchindex nicht aufgenommen werden sollen.
Und ich meinte da eben das Gegenstück: Eine Datei, die Wörter enthält, die auf jeden Fall in den Index kommen, egal, welche Wortlänge eingestellt wurde...
Und ich meinte da eben das Gegenstück: Eine Datei, die Wörter enthält, die auf jeden Fall in den Index kommen, egal, welche Wortlänge eingestellt wurde...
Karsten Ude
-={ 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!
-={ 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!
[quote="oxpus - Mi 05.Okt, 2005 17:28";p="45212"]Also im phpBB2 kannst Du eine Datei "search_stopwords.txt" in den Ordner lang_... einstellen, in der alle Wörter enthalten sind, die im Suchindex nicht aufgenommen werden sollen.[/quote]
Ja ich weiß
, hab ich auch gemacht. Dann hab ich das (funktion_search.php):
Mit dem:
ersetzt, denn das Original funktioniert eben nicht, hab’s auf phpbb.com gefunden, da wurde schon ausgiebig darüber diskutiert.
[quote="oxpus - Mi 05.Okt, 2005 17:28";p="45212"]
Und ich meinte da eben das Gegenstück: Eine Datei, die Wörter enthält, die auf jeden Fall in den Index kommen, egal, welche Wortlänge eingestellt wurde...[/quote]
Genau das würde ich gerne haben…
Ja ich weiß
Code: Alles auswählen
$entry = preg_replace('/[ ]([\S]{1,2}|[\S]{21,})[ ]/',' ', $entry); Code: Alles auswählen
$entry = preg_replace('/(?<= )([\S]{1,5}|[\S]{16,})(?= )/',' ', $entry);[quote="oxpus - Mi 05.Okt, 2005 17:28";p="45212"]
Und ich meinte da eben das Gegenstück: Eine Datei, die Wörter enthält, die auf jeden Fall in den Index kommen, egal, welche Wortlänge eingestellt wurde...[/quote]
Genau das würde ich gerne haben…
Scotty's Stubentiger-Forum - Miau
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
Scotty's .NET Projekte: StarTrek Infos 10.01, e-hahn Updater 3.01, Easy Desktop Note 1.04
^^ Oh ja, dieser kleine Fix macht verdammt viel aus.
Ich hab den bei mir auch drin und hab nach dem einbau den Suchindex neu aufbauen lassen. Die Datenbank war ganz erheblich geschrumpft.
Ich hab den bei mir auch drin und hab nach dem einbau den Suchindex neu aufbauen lassen. Die Datenbank war ganz erheblich geschrumpft.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Naja, bei mir waren es zwar "nur" 0,6 MB, aber immerhin!
Mal zur Info:
Beitragstexte: 19,8 MB
Search Wordlist: 2,8 MB
Search Wordmatch: 12,4 MB
Stand jetzt...
Mal zur Info:
Beitragstexte: 19,8 MB
Search Wordlist: 2,8 MB
Search Wordmatch: 12,4 MB
Stand jetzt...
Zuletzt geändert von oxpus am Do 06.Okt, 2005 08:22, insgesamt 1-mal geändert.
Karsten Ude
-={ 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!
-={ 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!
Beitragstexte: 22,1 MB
Search Wordlist: 2,6 MB
Search Wordmatch: 29,3 MB
Ist der aktuelle stand von EmF.
Wieviel ich durch den Fix gespart hab, weis ich leider nicht mehr. Aber ich hatte recht dumm aus der Wäsche geschaut, weil es mehr war als ich gedacht hatte.
Search Wordlist: 2,6 MB
Search Wordmatch: 29,3 MB
Ist der aktuelle stand von EmF.
Wieviel ich durch den Fix gespart hab, weis ich leider nicht mehr. Aber ich hatte recht dumm aus der Wäsche geschaut, weil es mehr war als ich gedacht hatte.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
______________________________________
Kein Support per PM, ICQ oder eMail!!![/center]
- oxpus
- Administrator
- Beiträge: 28735
- Registriert: Mo 27.Jan, 2003 22:13
- Wohnort: Bad Wildungen
- Kontaktdaten:
Ich habe keine Ahnung, ob das funktioniert, aber testet es mal:
In der includes/functions_search.php finden
und mit diesem ersetzen:
Was macht der Code?
Also:
Zunächst einmal muss ich ja sicherstellen, daß zu kurze oder zu lange Wörter einfach nicht vor den Angaben in der "Goliste" aussortiert werden, damit diese eben auch wirklich indiziert werden können.
Dafür habe ich diese beiden Bedingungen/Verarbeitungsschritte erstmal getauscht.
Dann prüfe ich, beginnend mit dem nun neuen ersten Teil, ob dem Stopwort (in der Datei language/lang_.../search_stopwords.txt) ein Minus "-" vorangestellt ist.
Hiermit soll in der gleichen Datei eben markiert werden, welches Wort auf jeden Fall zu indizieren ist.
Vorteil dabei ist, daß man nicht eine weitere Wortdatei einbinden und damit zu viele Dateien, bzw. Codestellen anpassen muss.
Existiert nun ein solches "Goword", wird dieses mit "#>|" und "|<#" jeweils umklammert, um länger zu sein und extra markiert zu bleiben.
Anschliessend wird ein Merker gesetzt, der aussagt, daß ein oder mehrere "Gowords" gefunden wurden.
Zusätzlich wird hier auch geprüft, ob das Suchwort länger als die voreingestellten 15 Zeichen ist. Dann wird ein "Suchwort-Längen-Wert" entsprechend angehohen.
Nun folgt Schritt 2, in dem das "droppen" langer/kurzer Wörter durchgeführt wird.
Hier lasse ich die Original-Routine durchführen und eben genau dabei werden die zuvor markierten Wörter ja nicht aussortiert, da sie
- durch die Markierung länger sind als die Mindestlänge von 5 Zeichen und
- die Maximallänge der zu indizierenden Wörter dieses (und auch wirklich nur dieses) Beitrags hinaufgesetzt wurde.
Zuletzt werden dann noch die Markierungen entfernt, damit der Post nicht zerstört wird.
Vorteil dieser Methode:
Alle "Gowords" können beliebig lang sein und werden nur für den gerade aktuellen Beitrag geprüft.
Enthält der Beitrag dann z. B. ein überlanges "Goword", wird dieses indiziert, obwohl normalerweise nur 15 Zeichen lange Wörter im Index landen.
Nachteil:
In einem Beitrag, in dem mehr überlange Wörter als nur die "Gowords" vorhanden sind, werden diese wahrscheinlich ebenfalls indiziert (wie gesagt, habe das Snippet noch nicht getestet).
Nun, soweit der theoretische Ansatz.
Leider habe ich im Moment nicht die Zeit zu testen.
Versuchts also mal. Schief gehen kann soweit nichts (mal abgesehen von Tippfehler im Script, die zu PHP-Fehlermeldungen führen können), ausser, daß im Suchindex die schattigsten Einträge auftauchen.
Nun, den Index kann man neu aufbauen und nach einer Deinstallation dieses Snippets auch einen verhunzten Beitrag wieder richten.
Wäre also nett, wenn Ihr sagen könnt, ob dieser Ansatz funktioniert und wenn nicht, ob und mit welchen Änderungen es doch läuft.
Viel Erfolg und schonmal Danke fürs Testen.
In der includes/functions_search.php finden
Code: Alles auswählen
if ( $mode == 'post' )
{
$entry = str_replace('*', ' ', $entry);
// 'words' that consist of <3 or >20 characters are removed.
$entry = preg_replace('/(?<= )([\S]{1,5}|[\S]{16,})(?= )/',' ', $entry);
}
if ( !empty($stopword_list) )
{
for ($j = 0; $j < count($stopword_list); $j++)
{
$stopword = trim($stopword_list[$j]);
if ( $mode == 'post' || ( $stopword != 'not' && $stopword != 'and' && $stopword != 'or' ) )
{
$entry = str_replace(' ' . trim($stopword) . ' ', ' ', $entry);
}
}
}Code: Alles auswählen
$gowords = 0;
$goword_length = 15;
if ( !empty($stopword_list) )
{
for ($j = 0; $j < count($stopword_list); $j++)
{
$stopword = trim($stopword_list[$j]);
if ( $mode == 'post' || ( $stopword != 'not' && $stopword != 'and' && $stopword != 'or' ) )
{
if ($stopword{0} == "-")
{
$entry = str_replace(' ' . trim($stopword) . ' ', ' #>|' . trim($stopword) . '|<# ', $entry);
$gowords = TRUE;
if (strlen(' #>|' . trim($stopword) . '|<# ') > $goword_length)
{
$goword_length = strlen(' #>|' . trim($stopword) . '|<# ');
}
}
else
{
$entry = str_replace(' ' . trim($stopword) . ' ', ' ', $entry);
}
}
}
}
$goword_length++;
if ( $mode == 'post' )
{
$entry = str_replace('*', ' ', $entry);
// 'words' that consist of <3 or >20 characters are removed.
$entry = preg_replace('/(?<= )([\S]{1,5}|[\S]{'.$goword_length.',})(?= )/',' ', $entry);
$entry = ($gowords) ? str_replace('#>|', '', $entry);
$entry = ($gowords) ? str_replace('|<#', '', $entry);
}Also:
Zunächst einmal muss ich ja sicherstellen, daß zu kurze oder zu lange Wörter einfach nicht vor den Angaben in der "Goliste" aussortiert werden, damit diese eben auch wirklich indiziert werden können.
Dafür habe ich diese beiden Bedingungen/Verarbeitungsschritte erstmal getauscht.
Dann prüfe ich, beginnend mit dem nun neuen ersten Teil, ob dem Stopwort (in der Datei language/lang_.../search_stopwords.txt) ein Minus "-" vorangestellt ist.
Hiermit soll in der gleichen Datei eben markiert werden, welches Wort auf jeden Fall zu indizieren ist.
Vorteil dabei ist, daß man nicht eine weitere Wortdatei einbinden und damit zu viele Dateien, bzw. Codestellen anpassen muss.
Existiert nun ein solches "Goword", wird dieses mit "#>|" und "|<#" jeweils umklammert, um länger zu sein und extra markiert zu bleiben.
Anschliessend wird ein Merker gesetzt, der aussagt, daß ein oder mehrere "Gowords" gefunden wurden.
Zusätzlich wird hier auch geprüft, ob das Suchwort länger als die voreingestellten 15 Zeichen ist. Dann wird ein "Suchwort-Längen-Wert" entsprechend angehohen.
Nun folgt Schritt 2, in dem das "droppen" langer/kurzer Wörter durchgeführt wird.
Hier lasse ich die Original-Routine durchführen und eben genau dabei werden die zuvor markierten Wörter ja nicht aussortiert, da sie
- durch die Markierung länger sind als die Mindestlänge von 5 Zeichen und
- die Maximallänge der zu indizierenden Wörter dieses (und auch wirklich nur dieses) Beitrags hinaufgesetzt wurde.
Zuletzt werden dann noch die Markierungen entfernt, damit der Post nicht zerstört wird.
Vorteil dieser Methode:
Alle "Gowords" können beliebig lang sein und werden nur für den gerade aktuellen Beitrag geprüft.
Enthält der Beitrag dann z. B. ein überlanges "Goword", wird dieses indiziert, obwohl normalerweise nur 15 Zeichen lange Wörter im Index landen.
Nachteil:
In einem Beitrag, in dem mehr überlange Wörter als nur die "Gowords" vorhanden sind, werden diese wahrscheinlich ebenfalls indiziert (wie gesagt, habe das Snippet noch nicht getestet).
Nun, soweit der theoretische Ansatz.
Leider habe ich im Moment nicht die Zeit zu testen.
Versuchts also mal. Schief gehen kann soweit nichts (mal abgesehen von Tippfehler im Script, die zu PHP-Fehlermeldungen führen können), ausser, daß im Suchindex die schattigsten Einträge auftauchen.
Nun, den Index kann man neu aufbauen und nach einer Deinstallation dieses Snippets auch einen verhunzten Beitrag wieder richten.
Wäre also nett, wenn Ihr sagen könnt, ob dieser Ansatz funktioniert und wenn nicht, ob und mit welchen Änderungen es doch läuft.
Viel Erfolg und schonmal Danke fürs Testen.
Karsten Ude
-={ 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!
-={ 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!