2009-04-17 7 views
7

Estoy usando índices de texto completo de MySQL en una aplicación de Rails 2.3.2. Agregué el índice a través de SQL nativo en mi migración. Pero hay un problema conocido que causa problemas con schema.rb. Rails no entiende los índices de texto completo e intenta crear un índice normal. Esto provocará un error al crear la base de datos de schema.rb (por ejemplo, pruebas, especificaciones, etc.):Índice de texto completo de MySQL con Rails 2.3.2 (problema de migración)

Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`) 

¿Hay una manera de resolver este problema en Rails 2.3.2 sin barras de mono-parches? Y si no, ¿cuál es la mejor manera de lidiar con esto?

¡Gracias!

Mi migración:

class FulltextIndexCustomersSmsMessage < ActiveRecord::Migration 
    def self.up 
    execute('ALTER TABLE sms ENGINE = MyISAM') 
    execute('ALTER TABLE customers ENGINE = MyISAM') 
    execute('CREATE FULLTEXT INDEX fulltext_sms ON sms (text(500))') 
    execute('CREATE FULLTEXT INDEX fulltext_customer ON customers (fullname(255))') 
    end 

    def self.down 
    execute('ALTER TABLE sms ENGINE = innodb') 
    execute('ALTER TABLE customers ENGINE = innodb') 
    execute('DROP INDEX fulltext_sms ON sms') 
    execute('DROP INDEX fulltext_customer ON customers') 
    end 
end 

schema.rb:

add_index "sms", ["text"], :name => "fulltext_sms" 

Respuesta

1

¿Cómo sobre el uso de uno de los motores de búsqueda de texto completo que puede ser fácilmente conectados a los carriles? Le ahorra la molestia de hacerlo todo usted mismo con mysql. Dos buenas opciones, que proporcionan una gran cantidad de personalización, son:

+0

buena idea, pero en caso de que quieren hacer frente a esto por mí mismo, lo podría hacer? –

+0

con sphinx (que * es * una muy buena opción cuando se utiliza con TS) también tiene que tratar de mantener el daemon en ejecución con un trabajo cron y reconstruir los índices. Voy a intentar usar el enfoque nativo de MySQL en un proyecto pequeño. –

Cuestiones relacionadas