Seite 1 von 1
Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 05.05.2009 01:11
von susi24
Huhu ihr Lieben
aus aktuellem Anlass wollte ich mal fragen:
wo oder was ist der Unterschied zwischen
fulltext native und
fulltext mysql
Also vorher hatte ich fulltext native eingestellt- was mir eine DB-größe von 1,5GB bescherte. Wurde bei der Suche dann die Abfrage aus der dazugehörigen Tabelle gezogen?
Zieht fulltext mysql die Suchergebnisse aus den Beiträgen der DB?
Oder wie funktioniert das?
Ich wundere mich nämlich.
Wir befürchteten erst, wenn wir auf FTmysql umstellen, wird es länger dauern bis die Suchergebnisse gezeigt werden. Aber das Gegenteil ist der Fall.
mit FT-native dauerte es OFTMALS sehr viel länger.
Und jetzt bin ich neugierig.

Re: Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 05.05.2009 10:27
von Dr.Death
Hallo,
kurz erklärt:
Native: Die Suchwörter eines jeden Beitrags werden in eine extra Tabelle abgelegt und die Software ( phpBB3 ) muss dann in diesen Tabellen suchen.
Fulltext: Die Datenbank selbst legt Indizies an und verwaltet diese.
Verfasst: 05.05.2009 11:26
von dieweltist
Bei meinem Forum brauche ich mir da keine Gedanken darüber zu machen, was ich benutze. Weil serverseitig die Datenbank auf mindestens vier Zeichen eingestellt ist, muss ich sowieso Fulltext native verwenden anstatt Fulltext mysql. Denn das geht ja gar nicht, dass man bspw. nicht nach "MP3" suchen kann.
Hinzu kommt, dass ich in meinem Forum Suchlinks nach allen Threads bzw. Beiträgen (ermöglicht) habe, indem ein Wildcat * in das Feld für die Suche nach Autor ist. Diese Suche erfordert auch Fulltext native mit der Angabe 0 (Null) bei der Angabe der mindestens indizierten Zeichen für den Autor. Die Schwelle für häufig vorkommende Wörter muss ich dazu übrigens auch auf 0 (Null) stellen.
Re: Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 12.05.2009 22:25
von susi24
Und was ist dann jetzt besser? native oder mysql?
native verbraucht ja irre platz wie wir nun festgestellt haben.
jetzt hab ich ja deshalb auf mysql umgestellt und wenn ich nach einem autor in einem forum suche, zeigt er mir NIX.
es werden 'nur' die ganzen beiträge statt wie bei native die wörter indiziert.
Anhang: ganz nebenbei habe ich noch einen Fehler gefunden.
Weil grad mal ein User oben online war habe ich den Namen 'gepackt' und in die Autorliste der Suche gezogen. Folglich stand der ganze Link drin. Und dann kam eine Fehlermeldung:
Code: Alles auswählen
Allgemeiner Fehler
SQL ERROR [ mysql4 ]
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' [1267]
SQL
SELECT user_id FROM phpbb3_users WHERE username_clean = 'http://www.mamas-racker.de/memberlist.phpʔmode=viewprofile&u=587' AND user_type IN (0, 3) LIMIT 100
BACKTRACE
FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()
FILE: includes/db/mysql.php
LINE: 221
CALL: dbal_mysql->sql_query()
FILE: includes/db/dbal.php
LINE: 170
CALL: dbal_mysql->_sql_query_limit()
FILE: search.php
LINE: 117
CALL: dbal->sql_query_limit()
Selbst wenn dies kein direkter Fehler ist, sollte doch dennoch eher eine übliche Meldung kommen? Abfrage nich erlaubt oder gefunden oder so, statt sowas...??? Ähnlichen Fehler erhalte ich wenn ich <!-- endif --> eingebe oder ähnliches
Re: Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 13.05.2009 00:28
von Mahony
Hallo
Und was ist dann jetzt besser? native oder mysql?
MYSQL ist schneller und sollte daher die bessere Wahl sein.
jetzt hab ich ja deshalb auf mysql umgestellt und wenn ich nach einem autor in einem forum suche, zeigt er mir NIX.
Hast du auch den Suchindex neu aufgebaut? ACP--Wartung--Such-Indizes--Fulltext mysql--auf
index erstellen klicken.
Weil grad mal ein User oben online war habe ich den Namen 'gepackt' und in die Autorliste der Suche gezogen.Folglich stand der ganze Link drin.
Und dann kam eine Fehlermeldung:
Allgemeiner Fehler
SQL ERROR [ mysql4 ]
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' [1267]
In deiner Datenbank kollidieren verschiedene Zeichensätze, so dass ein Vergleich nicht möglich ist.
Versuch mal folgendes (in phpmyadmin ausführen).
Code: Alles auswählen
ALTER TABLE `phpbb3_users` CHANGE `username_clean` `username_clean` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
Selbst wenn dies kein direkter Fehler ist, sollte doch dennoch eher eine übliche Meldung kommen?
Ja stimmt - Du solltest normalerweise einen Fehler in der Art
You specified too many words to search for. Please do not enter more than xx words bzw.
Deine Suchanfrage enthält zu viele Wörter. Bitte gebe nicht mehr als XX Wörter an.angezeigt bekommen.
Ähnlichen Fehler erhalte ich wenn ich <!-- endif --> eingebe oder ähnliches
Poste doch mal bitte die genaue/n Fehlermeldung/en, die dir dann ausgegeben werden.
Grüße: Mahony
Re: Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 13.05.2009 10:36
von susi24
Danke Mahony werde ich heute abend mal ausprobieren mit meinem Männe zusammen. Alleine trau ich mich das immernoch nicht
Mahony hat geschrieben:
Ähnlichen Fehler erhalte ich wenn ich <!-- endif --> eingebe oder ähnliches
Poste doch mal bitte die genaue/n Fehlermeldung/en, die dir dann ausgegeben werden.
Da gibts bestimmt noch mehr weil fast überall latin1...in der db is.
zu dem <!-- endif -->
supi ... das lag wohl an einer Einstellung. Gestern hatte ich diese nämlich geändert. Das Maximum ist wohl auf 84- eingestellt. Vorher stand das maximum an zeichen auf 30 und ich habe beide Suchfelder angepasst auf Minimum 3 Zeichen. Vorher war es bei 4 Zeichen im normalen Suchfeld (nicht autor). Naja und danach hatte ich die Indizierung erneut gemacht und heute ist der Fehler nicht mehr da.

Re: Unterschiede: die Suche: fulltext native oder fulltext mysql
Verfasst: 20.06.2009 14:32
von hoerbie
Bei mir wird bei Umstellung auf fulltext mysql nicht die Tabelle "wordmatch" größer, die bleibt leer, sondern die Tabelle "posts". Die Datenbankgröße an sich bleibt gleich groß. Ist das ein normales Verhalten?