2008-09-26 6 views

Antwort

5

Ich bin leider nicht sehr gut mit PostgreSQL vertraut, aber wenn Sie die FULL TEXT-Suche in MySQL verwenden, sind Sie sofort mit MyISAM verbunden. Wenn Sie InnoDB verwenden möchten (und wenn die ACID-Kompatibilität Ihnen etwas bedeutet, sollten Sie InnoDB verwenden), müssen Sie andere Lösungen verwenden.

Zwei beliebte Alternativen, die oft ausgerollt werden, sind Lucene (ein Apache-Projekt mit einem Zend-Modul, wenn Sie PHP verwenden) und Sphinx.

+3

Für alle, die dies jetzt lesen, unterstützt InnoDB ab MySQL 5.6 die Volltextsuche. – YeB

0

Ich denke, Sie können Sphinx mit MySQL und Postgres verwenden. ist hier an article zu erklären, wie Sphinx mit MySQL verwenden (Sie es als Plugin hinzufügen)

+0

Sphinx funktioniert nur mit MySQL. Das heißt, es unterstützt nur das Abrufen von Daten von MySQL. – Timmmm

6

PostgreSQL 8.3 wird in Volltextsuche gebaut, die eine integrierte Version des „tsearch2“

Hier sind die Dokumentation: http://www.postgresql.org/docs/8.3/static/textsearch.html

Und das Beispiel aus der Dokumentation:

SELECT title 
FROM pgweb 
WHERE to_tsvector(body) @@ to_tsquery('friend'); 

Wo Körper ein Textfeld ist. Sie können speziell für diese Sucharten indizieren und sie können natürlich komplexer werden als dieses einfache Beispiel. Die Funktionalität ist sehr solide und es lohnt sich, in sie einzutauchen, während Sie Ihre Entscheidung treffen.

Viel Glück.

+0

Out of the Box ist die Volltextsuche ziemlich langsam, stellen Sie sicher, gründlich Abfrage-Optimierungsstrategien auf diesem, weil sonst Ihre UX schrecklich wie 28,8k Modems sein wird. –

2

Wenn Sie Hibernate als ORM verwenden, empfehle ich dringend, die Hibernate-Suche zu verwenden. Es baut auf Lucene, also ist es super schnell.

Karl

1

Ich habe ziemlich gute Erfahrung mit postgresql/tsearch2 habe, zumal es in die Standard-Distribution gerollt wurde (vor Version 8.0 - denke ich - es war eine optionale contrib-Funktion und Modernisierung beteiligt tsearch2 ein bisschen Arbeit).

Wenn ich mich richtig erinnere, müssen Sie einige Eigenschaften (Fuzzy Matching, Wörterbuch Zeug) vor dem Start festlegen, während auf anderen Datenbanken diese Dinge flexibel durch die Volltextsyntax selbst ausgesetzt sind (ich denke Oracle Text, hier, aber Ich weiß, dass das für deine Frage nicht relevant ist).

0

Mysql Volltextsuche ist sehr langsam. Daten können nicht mehr als 1 Million (mehrere zehn Sekunden pro Abfrage) verarbeitet werden.

Ich habe keine Erfahrung mit Postgresql Volltextsuche.

Ich habe sphinxsearch verwendet. Es ist sehr schnell und einfach zu bedienen. Aber es ist nicht so mächtig. Ich meine die Suchfunktionalität. Zum Beispiel unterstützt es nicht wie 'abc?', Wo '?' steht für jeden Charakter.

Ich kenne auch Lucene. Es ist mächtig, aber es ist schwer zu lernen.