porque - Búsqueda de texto completo de PostgreSQL y MySQL
postgresql vs mysql php (6)
No estoy muy familiarizado con PostgreSQL, pero si utiliza la búsqueda FULL TEXT en MySQL, estará inmediatamente vinculado a MyISAM. Si quiere usar InnoDB (y si el cumplimiento de ACID significa algo para usted, debe usar InnoDB) está atrapado usando otras soluciones.
Dos alternativas populares que a menudo se implementan son Lucene (un proyecto de Apache con un módulo Zend si estás usando PHP) y Sphinx .
¿Cómo se comparan los sistemas de búsqueda de texto completo de PostgreSQL y MySQL? ¿Hay alguno claramente mejor que el oder? ¿De qué manera son diferentes?
Creo que puedes usar Sphinx con MySQL y Postgres. Aquí hay un artículo para explicar cómo usar Sphinx con MySQL (puede agregarlo como un complemento)
PostgreSQL 8.3 ha incorporado una búsqueda de texto completo que es una versión integrada de "tsearch2"
Aquí está la documentación: http://www.postgresql.org/docs/8.3/static/textsearch.html
Y el ejemplo de la documentación:
SELECT title
FROM pgweb
WHERE to_tsvector(body) @@ to_tsquery(''friend'');
Donde el cuerpo es un campo de texto. Puede indexar específicamente para este tipo de búsquedas y, por supuesto, pueden ser más complejas que este simple ejemplo. La funcionalidad es muy sólida y vale la pena sumergirse mientras toma su decisión.
La mejor de las suertes.
Si usa Hibernate como ORM, recomiendo usar la búsqueda de Hibernate. Su construcción en la parte superior de Lucene es súper rápida.
Karl
He tenido una experiencia bastante buena con postgresql / tsearch2, especialmente desde que se incluyó en la distribución estándar (antes de la versión 8.0, creo, era una función contrib opcional, y la actualización a tsearch2 implicaba un poco de trabajo).
Si recuerdo correctamente, tienes que establecer algunas propiedades (concordancia difusa, cosas del diccionario) antes del inicio, mientras que en otras bases de datos esas cosas se exponen de manera flexible a través de la sintaxis de texto completo (estoy pensando en Oracle Text, aquí, aunque sé que no es relevante para su pregunta).
La búsqueda de texto completo de Mysql es muy lenta. No puede manejar datos de más de 1 millón (varias decenas de segundos por consulta).
No tengo experiencia en utilizar la búsqueda de texto completo de postgresql.
He usado sphinxsearch. Es muy rápido y fácil de usar. Pero no es tan poderoso. Me refiero a la funcionalidad de búsqueda. Por ejemplo, no es compatible con ''abc?'', Donde ''?'' representa cualquier personaje.
También sé lucene. Es poderoso, pero es difícil de aprender.