[MySQL] Die perfekte Suche

String

Erfahrenes Mitglied
Hallo zusammen,

kurz zur Ausgangssituation:
Wir haben 15.000 Artikel mit teilweise ziemlich langen Texten (mehr als eine Seite ist keine Seltenheit). Das ganze ist mehrsprachig. Also:

SQL:
artikel:
id, datum ....

artikel_texte:
artikelid, Sprache, text

Eine einfache LIKE Suche hilft uns nicht sonderlich weiter. Sie liefert relativ schlechte Ergebnisse, ich kann nicht mit Plus, Minus und so weiter arbeiten. Also irgendwie nicht ganz das Wahre.

Eine Volltextsuche, boolean-Mode ist zwar schon ganz gut, da Plus, Minus und co verwendbar. Die Ergebnisse können nach Bewertung aus sortiert ausgegeben werden und ist auch eigentlich schnell genug.

Jetzt gibt es aber auch bei der Volltextsuche einige Probleme. z.B. können einige Begriffe wie "K&N" zu Problemen führen -> Hier wird gar nichts gefunden. Auch Suchbegriffe wie "Samba 7 Krümmer" führen zu sehr schlechten Ergebnissen. Teils sogar schlechter als bei einer einfachen LIKE-Suche.

Meine erste Vermutung: Die ft_min_word_len ist zu "hoch". Steht aber auf zwei Zeichen, weshalb bei z.b. K&N ein anderer Grund für Probleme sorgen muss.
Bei "Samba 7 Krümmer" habe ich irgendwie das Gefühl, dass die einzelne Zahl das Problem ist. Sie wird evt. auch komplett ignoriert.


Doch kommen wir nun zur eigentlichen Frage:
Wie löse ich das Problem richtig?

Vorschläge findet man im Netz genug, gehen aber kaum auf die wirklich tiefen Details ein.
Erstelle ich die bekannten "Such-Wörter-Tabellen" wüsste ich nicht, wie ich mit PLUS oder MINUS begriffe einschließen oder ausschließen kann. Auch das Problem mit der einzelnen sieben in "Samba 7 Krümmer" würde mir nicht helfen, wenn ich die Texte auf einzelne Wörter zerlege und dann alles in einzelne Tabellen eintrage.


Deshalb meine Frage:
Habt ihr da ein paar Ideen? Habt ihr so etwas vielleicht selber schonmal zufrieden stellend gelöst?
Oder gehe ich das ganze einfach vollkommen falsch an?!


Vielen Dank schonmal für eure Ideen :)

paD
 
Relationale Datenbanken sind nicht wirklich für Volltextsuche gemacht. Bestimmt kann man da was basteln, aber wieso das Rad neu erfinden.

Das "Standard" Werkzeug in einem solchen Fall ist Lucene oder etwas komfortabler mit Solr on top.

http://lucene.apache.org/
http://lucene.apache.org/solr/

Ich werde definitiv keine Suche mehr mittels MySQL oder ähnlichem implementieren.
 
Joa, ich verwende MySQL :)
Allerdings ist die Volltextsuche mit MATCH im boolean Mode ungeeignet für die oben genannten Suchbegriffe.
Genau da liegt ja das Problem.
LIKE = Mist und unbrauchbar.
MATCH = Im Einsatz aber immer noch große Schwachpunkte. (siehe oben: "K&N" oder "Samba 7 Krümmer")

paD
 
Hochkomma = MySQL-Fehler. Müsste natürlich die Hochkommata Quoten = kein Ergebnis.
Quoten &, also \& = kein Ergebnis.

Nein, leider hilft das ganze gar nicht :(

Deshalb denke ich ja über eine Umstrukturierung der DB um.
Beziehungsweise diese zu erweitern..

MFG
paD
 
Zurück