Frage

Was sind die Einschränkungen oder gotchas oder Antipatterns oder Gefahren?

Es scheint ziemlich attraktiv, anscheinend kann man mit fast keiner Arbeit eine Suchmaschine erstellen. Aber es kann nicht ohne Probleme sein ...

Was sind Ihre Erfahrungen?

War es hilfreich?

Lösung

Meiner Meinung nach, ist der größte Nachteil, dass die MySQL-Volltextindizierung auf MyISAM-Tabellen sind begrenzt. In Bezug auf InnoDB-Tabellen oppsosed fehlt denen viele wichtige Funktionen, beispielsweise Transaktionen.

Andere Tipps

  

Es kann nicht ohne Probleme sein ...

Es ist sicher nicht!

Jede rein blockierter Wörtern zusammengesetzt Suchbegriff wird stillschweigend scheitern. Worte können aufgrund min / max Längenbeschränkungen und / oder die Stoppwortdatei gesperrt werden.

fand ich die Standard-Stoppwortdatei viel zu aggressiv, es wurde viele gültige Suche zu verhindern. Auch die Standardmindestlänge von 4 wurde treten in sehr oft für Akronyme Menschen könnten für suchen wollen. I reduziert die ft_min_word_len bis 3 und entfernt, um die Stoppliste vollständig (ft_stopword_file = ‚‘). Doc: http://dev.mysql.com/doc /refman/5.1/en/fulltext-fine-tuning.html

Sie können auch die Suchabfrage prüfen, um zu sehen, ob es enthält nur

Die Auswahl von ‚Wortzeichen‘ kann Ihren Bedürfnissen nicht gerecht werden, und es ist schwierig zu ändern. Zum Beispiel für „Terry“ gesucht werden passen „Terrys“ nicht. Im Allgemeinen gibt es keine Unterstützung für jede Art von stammen, so „Keks“ nicht „Kekse“ entspricht auch nicht.

Schließlich, wie cg erwähnt, gibt es keine Unterstützung für InnoDB. In der heutigen Zeit, Sie wollen nicht alle Ihre Daten in einer MyISAM-Tabelle zu setzen.

Wenn Sie die Speicher übrig haben, was Sie können, ist die Hauptsache, kanonische Version der Daten in einem InnoDB Tisch tun, und dann eine separate MyISAM-Tabelle erstellen, die eine Kopie des Freitextinhaltes enthält, rein für die Verwendung als searchbait. Sie haben beiden Tabellen auf einer Änderung zu aktualisieren, aber wenn die MyISAM-Tabelle Integrität verliert dann zumindest nur die Fähigkeit verlieren, über die Zeilen betroffen zu suchen, statt die wirklichen Live-Daten bumming und Anwendungsfehler zu bekommen.

Sie können dann, wenn man die Zyklen zu ersparen, Ihre eigene Textverarbeitung auf dem searchbait und Abfrageworten implementieren einige der oben genannten Einschränkungen zu umgehen. Zum Beispiel können Sie Zeichen, die Sie wollen entkommen Wort-Zeichen sein, entfernen Sie Zeichen, die Sie wollen nicht Wort-Zeichen und führen einfaches manuelles Englisch ergeben sein.

Bei großen Tabellen müssen Sie Ihre Puffergröße und Cache-Grenze in Ihrer MySQL-Konfigurationsdatei erhöhen.

Auch die MATCH () Spalten, die Sie bei der Suche verwenden, müssen die gleichen wie die Spalten im Index sein.

Neben bobince der sehr gute Antwort, gibt es einen Artikel in MySQL-Dokumentation, die zu Einschränkungen des Volltextes spricht. Hoffe das hilft. http://dev.mysql.com/doc/refman/5.0 /en/fulltext-restrictions.html (Olafur Waage sprach über eine dieser bereits)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top