2008-09-26 11 views

Respuesta

5

No estoy muy versado en PostgreSQL por desgracia, pero si se utiliza la búsqueda de texto completo en MySQL que estés inmediatamente ligado 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 usa PHP) y Sphinx.

+3

Para cualquiera que lea esto ahora, comenzando en MySQL 5.6, InnoDB admite la búsqueda de texto completo. – YeB

0

Creo que se puede utilizar tanto con Sphinx MySQL y Postgres. Aquí es an article para explicar cómo utilizar Esfinge con MySQL (que puede añadirlo como un plug-in)

+0

Sphinx solo funciona con MySQL. Es decir, solo admite recuperar datos de MySQL. – Timmmm

6

PostgreSQL 8.3 ha construido en la búsqueda de texto completo, que es una versión integrada de la "tsearch2"

Aquí es el 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.

Lo mejor de la suerte.

+0

Fuera de la caja, la búsqueda de texto completo es bastante lenta, asegúrese de investigar exhaustivamente las estrategias de optimización de consultas en este caso, ya que de lo contrario su UX será horrible como los módems de 28.8k. –

2

Si su uso de Hibernate como un ORM Le recomiendo usar la búsqueda de hibernación. Su construcción en la parte superior de Lucene es súper rápida.

Karl

1

que he tenido muy buena experiencia con PostgreSQL/tsearch2, especialmente desde que se rodó en la distribución estándar (antes de la versión 8.0 - creo - era una característica opcional contrib, y la actualización a tsearch2 involucrados un poco de trabajo).

Si recuerdo correctamente, debe establecer algunas propiedades (concordancia aproximada, material 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 (aquí estoy, sin embargo, en Oracle Text). Sé que eso no es relevante para tu pregunta).

0

búsqueda de texto completo de MySQL es muy lento. No puede manejar datos de más de 1 millón (varias decenas de segundos por consulta).

no tengo ninguna experiencia en el uso de PostgreSQL búsqueda de texto completo.

he utilizado 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.

Cuestiones relacionadas