2009-04-17 1 views
7

레일즈 2.3.2 어플리케이션에서 MySQL 풀 텍스트 인덱스를 사용하고 있습니다. 마이 그 레이션에서 원시 SQL을 통해 인덱스를 추가했습니다. 그러나 schema.rb에 문제가있는 것으로 알려진 문제점이 있습니다. Rails는 전체 텍스트 색인을 이해하지 못하고 일반 색인을 작성하려고합니다.레일즈 2.3.2가있는 MySQL Fulltext 인덱스 (마이 그 레이션 문제)

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

원숭이 패치 레일없이 레일 2.3.2에서이 문제를 해결하는 방법이 있나요 : (등 예를 들어, 테스트, 사양,) schema.rb에서 데이터베이스를 생성 할 때이 오류가 발생합니다? 그리고 그렇지 않다면, 이것을 처리하는 가장 좋은 방법은 무엇입니까?

감사합니다.

내 마이그레이션 :

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" 

답변

1

어떻게 쉽게 레일에 연결 할 수있는 전체 텍스트 검색 엔진 중 하나를 사용하는 방법에 대해? mysql을 사용하여 직접 모든 일을 처리하는 번거 로움을 덜어줍니다. 많은 맞춤 설정을 제공하는 두 가지 좋은 옵션은 ThinkingSphinx 플러그인 (또는 UltraSphinx)이 포함 된 Sphinx입니다.

+0

좋은 생각하지만, 경우에 나는이와 함께 자신을 처리하려면, 무엇을 내가 할 수 있을까? –

+0

을 스핑크스 (*는 TS와 함께 사용할 때 * 아주 좋은 선택입니다.) 또한 cron 작업으로 실행중인 데몬을 유지하고 인덱스를 다시 작성해야합니다. 작은 프로젝트에서 네이티브 MySQL 접근 방식을 사용해 보겠습니다. –