Hallo Zusammen,
bevor ich die Doku durchwälze und vielleicht auf Postgre umsteige frage ich einfach die Experten.
Ich programmiere eine Website in PHP und MySQL und brauche eine gute Volltext-Suchfunktion. Im MySQL kann man das über LIKE oder REGEXP regeln, was langsam bzw. sehr langsam sein könnte. Besser ist so eine Suche mit Volltext-Index, aber… und hier fangen die Probleme an und deshalb überlege ich, ob PostgreSQL es so machen kann wie ich mir das vorgestellt habe.
Es geht darum, dass ich einerseits eine Bewertung der Ergebnisse brauche, also die Relevanz der gefundenen Sätze, was der MySQL mit einem Volltext-Index kann. Er kann das zwar nicht mit der booleschen Suche, aber das kann man anders hinkriegen.
Die 1. Frage ist also, ob ich so was auch mit Postgre machen kann?
Was der MySQL mit dem Volltext-Index bzw. -Suche nicht kann ist, ein Wort finden das sich das gesuchte Wort auch in einem längeren Wort befindet. D. h. gefunden wird alles, was mit z. B. word beginnt, also quasi word* (auch mit booleschen Suche ist das so :-(). MySQL Volltext-Index bzw. -Suche kann aber *word nicht.
Wenn ich also nach word suche, dann möchte ich, dass gefunden wird: word, abcword, wordabc und abcwordabc. Des Weiteren wenn gesucht wird nach wo rd, dann sollten natürlich auch die o. g. Ergebnisse kommen.
Zusätzlich wäre auch wichtig, dass nach genau einer bestimmten Zeichenfolge gesucht werden kann, d. h. wenn jemand nach (genau) word sucht (also quasi “word”), dann sollten nur die Datensätze gefunden werden die das Wort word enthalten und nicht abcword, wordabc oder abcwordabc.
Die 2. Frage ist also ebenfalls, ob ich das mit Postgree realisieren kann?
Wenn das möglich sein sollte würde ich mich freuen, wenn Ihr mir auch sagen könnt, wie schwer bzw. aufwendig der Umstieg von MySQL 5.0.x auf PostgreSQL ist?
Ich freue mich auf Eure Antworten und Vielen Dank für Eure Hilfe schon im Voraus!
CU
Gregor