PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SearchIndex und badwords.php optimieren


Sascha.
27.02.2002, 22:16
Empfehlung: db-BackUp machen

Der "SearchIndex" braucht in jeder Datenbank auf der ein vB läuft immer jede Menge Platz.

Hier meine Tipps um den SearchIndex zu verkleinern.


deutsche badwords.php

Was bringt ein SearchIndex wenn er voller Wörter ist, nach denen nie jemand sucht? "es" "ist" "nicht" usw. sind Wörter die in fast jedem Beitrag vorkommen. Eine Suche danach wäre also nicht sinnvoll.
Dazu gibt es die Datei /admin/badwords.php

In dieser Datei stehen alle Wörter, die nicht in den SearchIndex aufgenommen werden sollen.

Da das vBulletin von Haus aus englisch ist, ist auch die badwords.php englisch. Das bringt einem Admins eines deutschen Boards aber nicht viel. Die Wörter die darin stehen, werden wohl so gut wie nie verwendet.

The_Sisko (http://www.star-trek-forum.de) hat sich die Mühe gemacht und eine Liste mit deutschen Badwords (http://www.vbulletin.com/forum/showthread.php?s=&threadid=8771&perpage=15&pagenumber=2) erstellt.

Einfach die Zeilen dort in eure badwords.php kopieren, Datei hochladen, SearchIndex über das Admin-ControlPanel löschen und neu erstellen - fertig.

Und schon ist euer SearchIndex etwas kleiner.

Als nächstes optimiert man die badwords.php
Die meisten Foren sind Themen-spezifisch und es gibt dort Wörter, die nicht in der badwords.php stehen, die aber für eine Suche nicht relevant sind.

Also durchsucht man den SearchIndex nach häufigen Wörtern.

Dazu in phpMyAdmin folgende Abfrage starten:


select title, count(*) as num
from word, searchindex
where word.wordid=searchindex.wordid && LENGTH(title)>4 && LENGTH(title)<12
group by title
order by num desc
limit 50


Aus dieser Liste sucht man sich dann die Wörter raus, von denen man denkt, das sie nicht in den SearchIndex gehören.
Das muß aber jeder selbst wissen.
Diese Wörter müssen dann nur noch in die badwords.php aufgenommen werden, SearchIndex löschen, neu erstellen - fertig.


Und schon ist die Datenbank noch ein wenig schlanker.


Sascha

macuser
07.03.2002, 16:55
meine db war 10mb, nachdem ich searchindex mit deutsche badwords.php re-index habe , db ist auf 6mb geschrumpft.


danke danke, einfach super :D

Supernature
15.03.2002, 16:02
Die deutsche Badwords hatte ich schon, aber der Tip mit den "Top50" hat nochmal erhebliche Einsparungen gebracht, besten Dank dafür!

Anke123
15.03.2002, 17:52
vielen Dank für den Tip

am WE wird er durchgeführt

Malick
15.03.2002, 22:29
Vielen Dank für den Tipp!!
Kann zwar keinen Vergleich anstellen, da ich dein Tipp sofort nach der Installation eingebaut habe, aber ist ja logisch das das was bringt ;)

Vogelfreund
17.03.2002, 04:25
Original geschrieben von macuser
meine db war 10mb, nachdem ich searchindex mit deutsche badwords.php re-index habe , db ist auf 6mb geschrumpft.

Meine Searchindex hat derzeit 70 MB !!

Ich versuche es nun mal mit der deutschen....

Vogelfreund
17.03.2002, 04:45
nach 20 Minuten ist der Searchindex nun bei 23 MB...

mal sehen wie lange es noch dauert bis der ganze Index erstellt ist....

Vogelfreund
17.03.2002, 05:17
Nach einer Stunde ist es geschafft...

Und ich muß sagen.. ich bin begeistert...

Dank der deutschen Liste ist mein Serachindex von 70 MB auf 44,5 MB runter.

Danke !!!

Habe auch noch Anregungen für die deutsche Liste:

gruss
grüße
grüsse

Liebe Grüße
Euer Patrick

Elyot
05.04.2002, 23:58
Na ja, 1,6 MB hat es gebracht. Ist besser als nix ;)
Prima Sache sag ich da nur!

Boothby
10.04.2002, 18:53
Kann mich mal jemand aufklären, was es mit dem Search-Index auf sich hat?

pogo
11.04.2002, 10:32
In der Tabelle searchindex wird gespeichert, welches Wort in welchem Beitrag vorkommt.

Wörter und Beiträge sind alle indiziert. Es steht also z.B. drin, dass Wort 654 in Beitrag 34 vorkommt. Die einzelnen Wörter und ihre Nummer sind in der Tabelle word zu finden.

sattler
25.04.2002, 19:48
Super Sache. Ich müsste jetzt nur noch den Searchindex neu machen. Wie stelle ich das im AdminPanel ein?

Gruss
Tobias

pogo
25.04.2002, 20:00
CP->Update Counters->Rebuild Searchindex

sattler
25.04.2002, 20:07
Und wie genau funktioniert das?

Number of threads to do per cycle?

Ich blick da net genau durch was gemacht werden muss.

Gruss
Tobias

pogo
25.04.2002, 20:50
Lass am besten alles so, wie es ist.

Vorher den Suchindex löschen. Link ist ja gleich da zu finden.

Jussuf
28.06.2002, 21:28
Muss man den Suchindex für dem neuerstellen löschen oder kann man den neuen auch einfach drüberlaufen lassen?

Mystics
28.06.2002, 21:32
@Jussuf

Ich würde den Suchindex immer vor dem Neuerstellen löschen. Nur so kann man sichergehen, dass keine "Leichen" zurückbleiben und der Suchindex komplett Up-To-Date ist.

Mystics

Jussuf
28.06.2002, 21:35
Danke für die flinke Antwort.
Schade, denn ein neuer Suchindex dauert ewig (ca. 230 MB reiner Searchindex).
Andere Frage:
Kann jemand grob abschätzen, inwieweit die Größe des SI sich verändert, wenn man die Minimum Word Length von 3 auf 2 herabsetzt?

Mystics
28.06.2002, 21:39
Original geschrieben von Jussuf
Kann jemand grob abschätzen, inwieweit die Größe des SI sich verändert, wenn man die Minimum Word Length von 3 auf 2 herabsetzt? Hmm, nach der ersten Überlegung würde ich sagen: nicht viel. In diesem Beitrag z.B. kommt nur ein einziges Wort mit zwei Buchstaben vor ;)

Bei dir dürfte die Größe von 230 MB auf ca. 250 MB steigen schätze ich (eher weniger).

jiggle.de
30.07.2002, 23:49
Wann sollte man den Searchindex neu generieren lassen ? Am besten nachts wenn keiner im Board ist ? Oder sogar das Board sperren während der Neugenerierung ? Oder ist das relativ egal und man kann es aucxh tagsüber machen ? Aber dann werden die User in der Zeit kaum etwas über die Suchfunktion finden oder ?

Mystics
30.07.2002, 23:53
Ja, am Besten, wenn am wenigsten los ist.

Da während dieser Zeit die Suchfunktion eh nicht zu gebrauchen ist, solltest du sie ganz deaktivieren.

Und wenn die Serverlast zu groß wird (keine Ahnung wieviele Beiträge / User du hast) solltest du das Board währenddessen ganz dicht machen.

Ansonsten kannst du es auch im laufendem Betrieb machen.

Mystics

jiggle.de
31.07.2002, 00:00
ok. danke. Dann mach ich das nachts und sperre kurz das Board.

pogo
17.08.2002, 13:29
Probleme mit geschlossenem Board und angeblichen Nutzern hierhin verschoben: Können User das Board nutzen, wenn es geschlossen ist? (http://www.vbulletin-germany.com/forum/showthread.php?s=&threadid=3263)

NightwoLF
17.08.2002, 15:17
Hi


mit hat das mit der badwords.php nun 10 MB in der DB gebracht.

Ok vielleicht muss ich noch mehr Wörte inzufügen die sinnlos sind.

Ich hatte ne txt von hier runtergeladen.

Aber ich muss sagen ECHT GUT TIP HIER.


Habt ihr noch mehr tips und tricks die DB kleiner zu bekommen.
Mein Provider hat mich schon angeschrieben. :))

Gruss
Thomas

Boothby
27.08.2002, 13:50
Das schlimmste ist aber, dass viele einfach nicht der deutschen Rechtschreibung mächtig sind und ne Menge falshc (;)) schreiben, deswegen wird der Searchindex mit orthografischen Karteileichen zugemüllt.

dbdb
30.08.2002, 17:26
Bei mir ist die Datenbank sogar angewachsen. Von vorher 83 MB bin ich auf 89 MB gekommen. Das finde ich gar nicht lustig. ;)

Grüße,
dbdb

Odysseus
12.11.2002, 23:53
Mein Board ist recht groß ... ca. 392.000 Posts ind 14.800 Threads, die SI Tabelle hat 130 MB.

Ich fände diese Methode sehr interessant, zumal ich im Searchindex sicher EINIGE Leichen habe. Ich hab z.B. irgendwann mal von 3-17 auf 4-13 Buchstaben verringert usw.
Eine Neubildung des SI stünde dringend an, doch ich trau mich nicht so recht ... wenn das mal wieder zwei Tage dauert, ist das keine Option; so lange werden meine User nicht warten wollen.

Was meint ihr, wie lange eine komplette Neubildung unter Verwendung von Siskos badwords.txt und der 4-13er Einschränkung dauern würde?
Der Server ist ein P3-1000 mit 1 GB Ram, wobei ca. 80-90% der Systemresourcen nur für mein Forum verfügbar sind.

kaiandeve
17.11.2002, 13:36
Original geschrieben von SaschaW
Empfehlung: db-BackUp machen
Dazu in phpMyAdmin folgende Abfrage starten:


select title, count(*) as num
from word, searchindex
where word.wordid=searchindex.wordid && LENGTH(title)>4 && LENGTH(title)<12
group by title
order by num desc
limit 50




Hallo Ihr,

bin nun auch dabei meine 60MB SI zu entschlacken.
Das mit den Badwords habe ich nun hinbekommen.
Nur mit dem o.g. Befehl läufts nicht so.
Habe:
phpMyAdmin 2.2.5-rc1 MySQL 3.23.36

Und ich bekomme nach einer Weile "die Seite kann nicht angezeigt werden".
Was ist denn falsch?
Ich gebe den Befehl in der DB bei:
"SQL-Befehl(e) ausführen" ein.
Bitte um Hilfe...

gruß Kai

kaiandeve
17.11.2002, 13:50
hmm - war wohl zu blöd
habes nochmal eingegeben (4.mal)
und nun gehts :-)

danke

reifegerste
17.11.2002, 18:00
uihhh, danke für DEN Tipp...

meine searchindex war vorher um die 130 MB groß.

Jetzt ist sie "nur" noch 75MB groß... ein doch seeehr schöner Erfolg.

Vielen Dank!

Odysseus
17.11.2002, 19:25
Original geschrieben von reifegerste
uihhh, danke für DEN Tipp...

meine searchindex war vorher um die 130 MB groß.

Jetzt ist sie "nur" noch 75MB groß... ein doch seeehr schöner Erfolg.

Vielen Dank!

Wie lange hat das bei Dir gedauert mit dem Neruschreiben lassen?

reifegerste
17.11.2002, 19:41
naja bei knapp 22000 themen und ca. 220000 beiträgen ca. 2 1/2 Stunden

Das funktionierte eigentlich ganz gut

is nen 1200er CPU mit 512 MB RAM

Odysseus
17.11.2002, 22:17
Hm, ich hab 15.000 Themen mit 400.000 Beiträgen auf einem P3-1000 mit 1 GB RAM ... wird also dann etwa doppelt so lange dauern.
Danke!

Minots
31.12.2002, 14:01
Ein Dankeschön, für diesen guten Ratschlag! :)

Datex
26.01.2003, 15:27
Hat jemand noch die zusammen gestellte badwords.php ?? Den der anhang ist wohl verloren/gelöscht worden und die reine badword von the_sisko will ich nicht übernehmen, sonst müsste ich zuviele wörter selbst hinzufügen.

Schorsch
27.01.2003, 01:59
die bräuchte ich auch dringend!!

Danke im Voraus!!

Gruß,
Schorsch

Minots
28.01.2003, 08:06
Im Anhang findet Ihr meine Version. Schaut mal nach, ob sie
für Euch brauchbar ist. :)

Hellburn
28.01.2003, 12:05
Muss man "unset($badwords);" löschen um sie zu aktivieren? Frage weil @Minots Datei die nicht mehr enthält.

pogo
28.01.2003, 12:21
Nein, Minots hats wohl einfach vergessen.

Minots
28.01.2003, 15:36
:o Ooops! Ist mir gar nicht aufgefallen.
Habe das jetzt geändert und den DL im vorherigen Post aktualisiert.

Sorry.

Schorsch
28.01.2003, 15:39
Vielen Dank Minots!! :)

Gruß,
Schorsch

Hellburn
01.02.2003, 13:11
Ist es eigentlich empfehlenswert das Board zu deaktivieren beim erstellen eines neuen Suchindexes? Könnten bei aktiviertem Board vielleich neue Postings die während der aktualisierung gemacht wurden, nicht in den Suchindex aufgenommen werden?

pogo
01.02.2003, 13:20
Ich glaube nicht, dass es gleich zu Fehlern kommt, wenn der Suchindex neu erstellt wird. Ratsamer ist es trotzdem dem Server die Ruhe zu lassen den Suchindex neu erstellen zu können, ohne dass nebenbei der normale Betrieb läuft.

Man kann es ja mal nachts um 03.00 machen. ;)

Subu1
02.03.2003, 11:09
sagt mal wie kann ich eigendlich den Suchindex so einstellen das er schon nach 3 Buchstaben anfängt zu suchen. einige Models möchten es gerne so;)

grüße subu1

Datex
02.03.2003, 12:34
ACP => vBulletin Options => Suchfunktion => Minimale Wortlänge

Subu1
02.03.2003, 12:42
i bin ich stupid, habs gerade gefunden, bin hierher geeilt um schnell zu editieren, damit es keiner mitbekommt:D

danke Dir Datex;)

grüße subu1

kaiandeve
02.10.2003, 18:39
Hallo Ihr,

Original geschrieben von pogo
In der Tabelle searchindex wird gespeichert, welches Wort in welchem Beitrag vorkommt.

Wörter und Beiträge sind alle indiziert. Es steht also z.B. drin, dass Wort 654 in Beitrag 34 vorkommt. Die einzelnen Wörter und ihre Nummer sind in der Tabelle word zu finden.

nun meine Frage:
kann ich die Word-Tabelle auch noch optimieren (21MB)?
Meine SI hat ja "Nur" 57 MB :-)
Aber es summiertsich halt - ingesammt habe ich eine DB von 172 MB

Danke Gruß
Kai

Mystics
02.10.2003, 23:42
Original geschrieben von kaiandeve
kann ich die Word-Tabelle auch noch optimieren (21MB)?word und searchindex gehören zusammen. Durch die badwords.php Änderung ist auch "word" schon optimiert.

Phreakazoid
07.10.2003, 06:51
Meine Searchindex hat über 260 MB. Da wird das optimieren bestimmt was ausmachen.

Sascha.
08.12.2003, 10:03
Ich habe auf Grundlage der badwords.php von ´Sisko´ eine deutsche searchwords.php für die Gamma1 erstellt.

Einfach alles zwischen

$badwords = array(

und

);

durch den Inhalte des Anhangs hier ersetzen.


Die SQL-Abfrage Abfrage für die Top50 Wörter wäre hier jetzt:


select title, count(*) as num
from word, postindex
where word.wordid=postindex.wordid && LENGTH(title)>4 && LENGTH(title)<12
group by title
order by num desc
limit 50


Alles andere wie gehabt (siehe erstes Posting)

E=mc²
28.02.2004, 02:15
Bei mir geht das aber nicht ich bekomme dann immer direkt eine Fehlermeldung.
Warning: Wrong datatype for second argument in call to in_array in /homepages/29/d3xxxxx5/htdocs/drei-fragezeichen/Rocky-Beach/includes/functions_databuild.php on line 473 so geht das dann ellen lang weiter!

pogo
28.02.2004, 10:46
Ein Teil in searchwords.php sieht bei dir so aus:
// these words will NOT be included in the Search Index
$badwords = array(
'2000',
'2001',
'aaa',
'ab',
'abend',
'Aber',
'abgesehen',
'absolut',
'ach',
'achja',
'achso',
.
.
.
'zwischen',
'zwölf'
);
Nach zwölf darf kein Komma mehr kommen!
Der Rest in searchwords.php muss unverändert bleiben!

E=mc²
28.02.2004, 11:32
Danke da war der Fehler! :)

Vogelfreund
28.02.2004, 23:05
Original geschrieben von Odysseus
Hm, ich hab 15.000 Themen mit 400.000 Beiträgen auf einem P3-1000 mit 1 GB RAM ... wird also dann etwa doppelt so lange dauern.
Danke!

Hi,

bei mir sind es 45.000 Themen...

Dualprozessor mit 2 mal 1,7 GHz und 1,5 GB RAM....

Und es dauert ewig....

Stadler
09.03.2004, 06:06
Ich war mal so frei, eine Liste zusammanzubasteln für vB3.

Der Einfachheit halber hänge ich mal als Textdatei ran, was man in searchwords.php ändern muss, damit alles hinhaut.

Um mir die Wörter zusammenzusuchen, hab ich folgende Abfrage verwendet:SELECT word.wordid, word.title, COUNT(postindex.wordid) AS hits
FROM word
LEFT JOIN postindex USING (wordid)
GROUP BY (postindex.wordid)
ORDER BY hits DESC
LIMIT 200Achtung: Ich selbst habe lokal immer erst ein wenig neu indiziert und dann die Abfrage verwendet. Wenn jemand tatsächlich mal wissen will, was für Wörter so den aktuellen ungekürzten postindex verstopfen, dem ist zu empfehlen, ein Backup zu machen, dies lokal aufzuspielen und dann die Abfrage über den MySQL-Client via DOS oder Shell durchzuführen, ansonsten jammt ihr nur unnötig den Server und habt eh' nur mit den PHP- und/oder Browser-Timeouts zu kämpfen ;)