Tuesday, 15 June 2010

ruby - Migration of trigram search in Rails -


मेरे पास माइग्रेशन है:

  class AddGinIndexToContacts & lt; ActiveRecord :: प्रवासन डीईएफ़ अप अमल ( "जिन का उपयोग करके संपर्क (first_name gin_trgm_ops, last_name gin_trgm_ops, नाम gin_trgm_ops) सूचकांक contacts_search_idx बनाएँ") डीईएफ़ नीचे अंत पर अमल ( "ड्रॉप सूचकांक contacts_search_idx") अंत अंत  
< P> यह कोड को schema.rb में बनाता है:

  add_index "contacts", ["first_name", "last_name", "name"], नाम: " contacts_search_idx ", का उपयोग करते हुए: जिन  

और बाद में, जब मैं रेक db निष्पादित करें: स्कीमा: लोड यह गलत एसक्यूएल उत्पन्न करता है:

 < कोड> बनाएँ "संपर्क" का उपयोग जिन ( "first_name", "last_name", "नाम")  

सबसे पहले, यह कहता है कि सूचकांक "contacts_search_idx":

< p> त्रुटि: डेटा प्रकार चरित्र अलग अभिगम विधि "जिन"

के लिए कोई डिफ़ॉल्ट ऑपरेटर वर्ग है

दूसरे, वहाँ खो रहे हैं gin_trgm_ops

यह कैसे काम करता है?

रेल 4.2

< पी> आप ca ऑपरेटर वर्ग को परिभाषित करने के लिए ऑर्डर परम का उपयोग करें।

  add_index "संपर्क", [ "first_name", "last_name", "नाम"], नाम: "contacts_search_idx", का उपयोग करते हुए: जिन, आदेश: {first_name: gin_trgm_ops, last_name: : Gin_trgm_ops, नाम:: gin_trgm_ops}  

इस समाधान को यहां मिला:


No comments:

Post a Comment