MySQL - Sucheengine
Harald
- php
0 Jan0 Andreas Korthaus
Hallo @ all,
Mit der Volltextindex Suche von MySQL lassen sich nur ganze Wörter finden, möchte ich z.B. auch wortstücke finden, oder und/oder,... Abfragen und ergenzungen zwischen Wörtern realisieren, geht dies mit der alten LIKE abfrage von MySQL meines wissens, doch nicht mit der Volltextindexsuche. Die alte Abfrage ist allerdings, wie überall steht, recht langsam, wie lässt sich trotzdem effizient und schnell eine gute Suchabfrage programmieren?
Danke für alle Antworten.
-----------
Mfg: Harald
Hi,
versuchs mal mit mngosaearch mit MySQL als backend.
Jan
--
Hallo!
Mit der Volltextindex Suche von MySQL lassen sich nur ganze Wörter finden, möchte ich z.B. auch wortstücke finden, oder und/oder,... Abfragen und ergenzungen zwischen Wörtern realisieren, geht dies mit der alten LIKE abfrage von MySQL meines wissens, doch nicht mit der Volltextindexsuche.
Doch, mit MySQL4, siehe http://de.mysql.com/documentation/mysql/bychapter/manual.de_Reference.html#Volltext-Features_in_MySQL_4.0
MATCH ... AGAINST wird folgende Boolesch Operatoren unterstützen:
+wort bedeutet, dass das Wort in jeder zurückgegebenen Zeile enthalten sein muss.
-wort bedeutet, dass das Wort in jeder zurückgegebenen Zeile nicht enthalten sein darf.
< und > können benutzt werden, um die Wortgewichtung in der Anfrage herab- und heraufzusetzen.
~ kann benutzt werden, um einem 'Rausch-Wort' ein negatives Gewicht zuzuweisen.
* ist ein Trunkierungsoperator.
Das müßte doch alles sein, oder? MySQL 4 ist auch über das beta-Stadium hinaus, aber leider nicht stable sonder "gamma" was ich noch nie gehört habe, naja.
Die alte Abfrage ist allerdings, wie überall steht, recht langsam, wie lässt sich trotzdem effizient und schnell eine gute Suchabfrage programmieren?
Du könntest Dir den MySQL-Quelltext angucken wie das da gemacht wird und das in PHP "übersetzen".
Was ich nicht verstehe wie die das schaffen mit Wildcards den Index zu nutzen. Ich habe mal versucht mit MySQL eine Suche für das Archiv dieses Forums zu entwickeln(120MB Daten), war aber nicht sehr erfolgreich, so richtig schnell habe ich es nicht hinbekommen. Daher würde ich heute glaube ich einen eigene Indexer schreiben, der die Daten zerlegt und selber in eine Tabelle schreibt, mit einem Wort pro Datensatz und einem schönen Index. ich hätte auch kein Problem den index mit LIKE wort% zu durchsuchen, nur anders herum wüßte ich nicht wie ich Teilstrings am Ende oder mitten in einem Wort schnell finden würde. Ist kein einfaches Thema(zumindest für mich), aber wie ich finde ganz interessant ;-)
Viele Grüße
Andreas