2009-06-23 4 views
0

Ich versuche, eine Titelsuche in MySQL über zwei verschiedene Datenbanken zu tun, um Daten aus verschiedenen Quellen zu vergleichen. In beiden db1 oder db2, die Titel beginnen manchmal mit "Der erste Titel" in einem db und nur "ersten Titel" in der anderen db oder "weit und weg" vs "weit & weg".mysql Suche vor "die" oder "und/&" Ambiguität

Mysql Volltextsuche scheint nicht sehr effektiv bei der Ermittlung dieser. Ich mache gerade gerade ein Match "WHERE title1 = title2", aber das vermisst natürlich jede Verbindung, bei der es kleine Unterschiede im Titel gibt.

Die einzige Lösung, die ich gefunden habe, ist durch eine Reihe von if-Anweisungen zu überprüfen, ob einer der Titel "the" oder "&" enthält.

Dies ist keine schreckliche Art, es zu tun, aber ich nehme an, dass es eine effizientere Methode gibt, meine Abfrage zu schreiben, um diese Probleme zu behandeln.

Irgendwelche Ideen? Bis jetzt waren meine Online-Suchen fruchtlos. Danke

Antwort

1

Haben Sie den Luxus eines Vorverarbeitungsschritts? Wenn Sie dies tun, sollten Sie in Erwägung ziehen, die Titel in den beiden Datenbanken zu kanalisieren, bevor Sie sie vergleichen.

+0

Ich hatte nicht darüber nachgedacht, anstatt über die Suche zu wiederholen, so konnte ich immer trimmen "das" und machen "&" "und", aber dachte, es könnte ein besserer Weg, es zu tun. – pedalpete

+0

oh ja, jetzt erinnere ich mich, warum das nicht oben auf der Liste war. Die Vorverarbeitung setzt voraus, dass ich beide Titel aus der Datenbank habe, um sie zu vergleichen, oder meinst du "Vorverarbeitung", bevor die Titel in die Datenbank gelangen? – pedalpete

+0

Ich dachte eigentlich daran, die Datenbanken zu modifizieren. Erstelle eine neue Spalte in jedem, canonicalized_title oder etwas Ähnliches, und führe eine Massenaktualisierung durch, um einen Titel mit all den getrimmten und den & s angehängten Titeln einzufügen, und führe dann einen direkten Vergleich durch. –