*dear Pat~ dunno why~ even i specify the *

*has group_users_ids, as: :user_id, type: :integer , multi: true*

*and create a **group_users_ids** method in model~*
*still got this error msg~ **◑ω◐ *

*the config of sphinx is  rt_attr_multi = user_id*

ThinkingSphinx::SphinxError: raw 1, column 11: MVA value specified for a 
non-MVA column - 
REPLACE INTO group_tenant1_core 
(id, `sphinx_internal_class_name`, `name`, `sphinx_internal_id`, 
`sphinx_internal_class`, `sphinx_deleted`, `network_id`, 
`list_in_directory_flag`, `created_at`, `updated_at`, `user_id`, 
`group_id`) VALUES 
(67, 'Group', 'All Company', 1, 'Group', 0, 1, 1, 1431065856, 1431065856, 
(1), 1)


Pat Allan於 2015年5月14日星期四 UTC+8下午2時45分26秒寫道:
>
> Fantastic :)
>
> On 14 May 2015, at 4:44 pm, Frank H <[email protected] <javascript:>> 
> wrote:
>
> *YAY~~~~~~*
>
> *~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~*
> *thanks you so much for your earnest help~*
> *i found previous issue is just about the legacy code's conditional query 
> bug~*
> *thx a lot~ **d(-_^)*
>
> *​BRGDS,*
> *Sincerely,* *Frank =)*
>
> Pat Allan於 2015年5月14日星期四 UTC+8下午2時33分47秒寫道:
>
> Going by the logs, it looks like you might be running `ts:index` - that 
> task is *only* for SQL-backed indices, so because you’re using real-time 
> indices, you don’t need to use it.
>
> Sphinx stores data in memory with real-time indices, and only writes these 
> to disk occasionally (and will also write to disk when you stop Sphinx - 
> try `rake ts:stop` and then `rake ts:start` and you should see files).
>
> In your Rails logs, you’ll spot the SphinxQL query (it looks very similar 
> to SQL, but it’s querying against Sphinx indices instead of tables). What’s 
> that query for the search that isn’t returning any results?
>
> — 
> Pat
>
> On 14 May 2015, at 4:02 pm, Frank H <[email protected]> wrote:
>
> *oh yeah~ it works perfectly~ (=^ェ^=)*
> *no matter indexing or later in development.searchd.query.log~ *
>
> *everything is normal (but without results xD)*
>
> *so i took a closer look at the db/sphinx/development*
> *but nothing in the folder after "rake ts:generate" *
> *(there were *.meta *.ram *.kill before)*
>
> *and development.searchd.log is just like this ◑ω◐*
> *ah... i felt so frustrated~ (◕‿‿◕。)*
>
>
> [Thu May 14 13:43:55.697 2015] [21615] Child process 21616 has been forked
> [Thu May 14 13:43:55.697 2015] [21616] listening on 127.0.0.1:9312
> [Thu May 14 13:43:55.803 2015] [21616] accepting connections
> [Thu May 14 13:44:02.543 2015] [21616] rotating indices (seamless=1)
> [Thu May 14 13:44:02.548 2015] [21616] WARNING: INTERNAL ERROR: nothing to 
> rotate after SIGHUP
> [Thu May 14 13:44:02.549 2015] [21616] rotating indices (seamless=1)
> [Thu May 14 13:44:02.563 2015] [21616] WARNING: INTERNAL ERROR: nothing to 
> rotate after SIGHUP
> [Thu May 14 13:44:02.776 2015] [21616] rotating indices (seamless=1)
> [Thu May 14 13:44:02.780 2015] [21616] WARNING: INTERNAL ERROR: nothing to 
> rotate after SIGHUP
> [Thu May 14 13:44:02.793 2015] [21616] rotating indices (seamless=1)
>
> Pat Allan於 2015年5月13日星期三 UTC+8下午9時15分30秒寫道:
>
> Oh, one thing I missed - the same needs to apply to your full_name field - 
> make full_name a method on your model instead (if it isn’t already), and 
> then just use it directly:
>
>   indexes full_name
>
> On 13 May 2015, at 11:00 pm, Frank H <[email protected]> wrote:
>
> awesome~ it takes time to digest~ thx very much~ (=^ェ^=)
>
> Pat Allan於 2015年5月13日星期三 UTC+8下午8時44分11秒寫道:
>
> Okay, the thing about real-time indices is that what you’re referring to 
> within an index definition must be methods on your models. This is 
> different to SQL-backed indices, where you refer to associations and 
> columns. 
>
> So, this code needs to change: 
>
>   has network_users(:id), as: :network_users, :type => :integer  
>   has network_users.network_id, as: :network_id, :type => :integer 
>   has id, as: :user_id, :type => :integer 
>
>   where "remove_flag = false" 
>
>   # For real-time indices, let's make sure we're using the appropriate 
> tenant. 
>   scope { Apartment::Tenant.switch! tenant.db; User } 
>
> The first line needs to refer to a method, not an association + a column. 
> It’s an easy enough translation, because a method returning what we want 
> already exists due to Rails’ association magic: 
>
>   has network_user_ids, as: :network_users, type: :integer, multi: true 
>
> You’ll note that I’m adding the :multi option at the end there - because 
> it’s a real-time index, we don’t have the database to refer to, hence why 
> we must manually specify types for attributes, and also whether any of them 
> are multi-value attributes. 
>
> The next line isn’t so easy - because you’ll first need to create a method 
> for this purpose in your User model: 
>
>   def network_ids 
>     network_users.pluck :network_id 
>   end 
>
> Once you’ve got that, it’s easy enough to fix the attribute: 
>
>   has network_ids, type: :integer, multi: true 
>
> The third attribute is actually not required, because Thinking Sphinx 
> creates an attribute already using the primary key value (id) - the 
> attribute’s name is sphinx_internal_id, so you can just use that instead. 
>
> And the `where` method does not exist in real-time indices - you’re 
> offering a SQL snippet, but real-time indices are understood in a Ruby 
> context. However, this is part of the reason why `scope` exists instead - 
> so let’s modify that accordingly: 
>
>   scope { Apartment::Tenant.switch! tenant.db; User.where(remove_flag: 
> false) } 
>
> Putting that all together: 
>
>   has network_user_ids, as: :network_users, type: :integer, multi: true 
>   has network_ids,                          type: :integer, multi: true 
>
>   scope { Apartment::Tenant.switch! tenant.db; User.where(remove_flag: 
> false) } 
>
> Plus, that method once again to go within your User model: 
>
>   def network_ids 
>     network_users.pluck :network_id 
>   end 
>
> I hope this all makes sense! Give it a shot and see how you go. 
>
> — 
> Pat 
>
> > On 13 May 2015, at 10:25 pm, Frank H <[email protected]> wrote: 
> > 
> > Haha it stopped by “user”~ 
> > i know it might be incorrect that line~ (*≧∇≦*) 
> > please help~ very appreciate~ 
> > 
> > Current_tenant = Apartment::Tenant.current 
> > 
> > # Each Tenant instance is tied to a tenant in this example. 
> > Tenant.find_each do |tenant| 
> > # Switch to the appropriate Apartment tenant. 
> > Apartment::Tenant.switch! tenant.db 
> > 
> > #ThinkingSphinx::Index.define :user, :with => :active_record, :delta => 
> true do 
> > ThinkingSphinx::Index.define( 
> > :user, 
> > # with: :active_record, 
> > # delta: true, 
> > name: "user_#{tenant.db}", 
> > offset_as: "user_#{tenant.db}".to_sym, 
> > with: :real_time )do 
> > # fields 
> > indexes [first_name, last_name], as: :full_name #, sortable: true 
> > 
> > # attributes 
> > has created_at, updated_at, :type => :timestamp 
> > has network_users(:id), as: :network_users, :type => :integer  
> > has network_users.network_id, as: :network_id, :type => :integer 
> > has id, as: :user_id, :type => :integer 
> > 
> > where "remove_flag = false" 
> > 
> > # For real-time indices, let's make sure we're using the appropriate 
> tenant. 
> > scope { Apartment::Tenant.switch! tenant.db; User } 
> > end 
> > end if Tenant.table_exists? 
> > 
> > # Switching back to the original tenant - this is useful in the 
> development 
> > # environment, as indices (and thus, this file) can be reloaded, and we 
> don't 
> > # want to always leave our app on our last tenant. 
> > Apartment::Tenant.switch! current_tenant 
> > 
> > Pat Allan於 2015年5月13日星期三 UTC+8下午6時59分53秒寫道: 
> > It looks like you have more than one index defined - you’ve shared your 
> Topic index, but what about the one for Conversation? And any others? 
> > 
> > — 
> > Pat 
> > 
> > On 13 May 2015, at 8:51 pm, Frank H <[email protected]> wrote: 
> > 
> > btw~ (=゚ω゚)ノ 
> > 
> > indexer 
> > { 
> > } 
> > 
> > searchd 
> > { 
> >   listen = 127.0.0.1:9312:mysql41 
> >   log = /home/frank/Dropbox/projects/testing/log/development.searchd.log
>  
> >   query_log = 
> /home/frank/Dropbox/projects/testing/log/development.searchd.query.log 
> >   pid_file = 
> /home/frank/Dropbox/projects/testing/log/development.sphinx.pid 
> >   workers = threads 
> >   binlog_path = /home/frank/Dropbox/projects/testing/log 
> > } 
> > 
> > index conversation_tenant1_core 
> > { 
> >   type = rt 
> >   path = 
> /home/frank/Dropbox/projects/testing/db/sphinx/development/conversation_tenant1_core
>  
> >   docinfo = extern 
> >   charset_type = utf-8 
> >   charset_table = 0..9, U+27,etc 
> >   min_prefix_len = 1 
> >   enable_star = 1 
> >   ngram_len = 1 
> >   ngram_chars = U+3400, etc 
> >   rt_field = sphinx_internal_class_name 
> >   rt_field = post_content 
> >   rt_field = topic_name 
> >   rt_field = title 
> >   rt_attr_uint = sphinx_deleted 
> >   rt_attr_uint = network_id 
> >   rt_attr_uint = user_id 
> >   rt_attr_uint = current_user_id 
> >   rt_attr_uint = group_id 
> >   rt_attr_bigint = sphinx_internal_id 
> >   rt_attr_timestamp = created_at 
> >   rt_attr_timestamp = updated_at 
> >   rt_attr_string = sphinx_internal_class 
> > } 
> > 
> > 
> > Frank H於 2015年5月13日星期三 UTC+8下午6時41分51秒寫道: 
> > sure~ (btw there was a date format i had no choice to map it into a 
> string xD) 
> > lots of gratitude~ ◑ω◐ 
> > 
> > current_tenant = Apartment::Tenant.current 
> > 
> > # Each Tenant instance is tied to a tenant in this example. 
> > Tenant.find_each do |tenant| 
> > # Switch to the appropriate Apartment tenant. 
> > Apartment::Tenant.switch! tenant.db 
> > 
> > #ThinkingSphinx::Index.define :topic, :with => :active_record, :delta => 
> true do 
> > ThinkingSphinx::Index.define( 
> > :topic, 
> > # with: :active_record, 
> > # delta: true, 
> > name: "topic_#{tenant.db}", 
> > offset_as: "topic_#{tenant.db}".to_sym, 
> > with: :real_time )do 
> > 
> > # fields 
> > indexes name #, sortable: true 
> > 
> > # attributes 
> > has network_id, :type => :integer 
> > has created_at, updated_at, :type => :timestamp 
> > 
> > # For real-time indices, let's make sure we're using the appropriate 
> tenant. 
> > scope { Apartment::Tenant.switch! tenant.db; Topic } 
> > end 
> > end if Tenant.table_exists? 
> > 
> > # Switching back to the original tenant - this is useful in the 
> development 
> > # environment, as indices (and thus, this file) can be reloaded, and we 
> don't 
> > # want to always leave our app on our last tenant. 
> > Apartment::Tenant.switch! current_tenant 
> > 
> > Pat Allan於 2015年5月13日星期三 UTC+8下午6時33分46秒寫道: 
> > Can you share your current index definition? 
> > 
> > — 
> > Pat 
> > 
> > On 13 May 2015, at 8:30 pm, Frank H <[email protected]> wrote: 
> > 
> > btw i've changed the strings into correct type~ (integer and timestamp) 
> (=^ェ^=) 
> > 
> > Frank H於 2015年5月13日星期三 UTC+8下午6時29分05秒寫道: 
> > dear Pat&All~ btw 
> > i'm almost there but here comes another error~ 
> > 
> > TypeError: can't convert ThinkingSphinx::ActiveRecord::Column to String 
> > (ThinkingSphinx::ActiveRecord::Column#to_str gives 
> ThinkingSphinx::ActiveRecord::Column) 
> > (line 5) 
> > 
> > and attachment is where my error came from~ pls help~ very appreciate~~ 
> (*≧∇≦*) 
> > 
> > Pat Allan於 2015年5月12日星期二 UTC+8下午4時26分14秒寫道: 
> > Have you got callbacks in the models you’re indexing, to ensure the data 
> is being saved to Sphinx? 
> > 
> > And have you run `rake ts:regenerate` to get all the indices set up and 
> existing records indexed? 
> > 
> > — 
> > Pat 
> > 
> > On 12 May 2015, at 6:01 pm, Frank H <[email protected]> wrote: 
> > 
> > excuse me~ 
> > i figured out select from index name is formal~ 
> > it's Sphinx Query not MySQL query xD 
> > but now here comes another issue~ 
> > i found that i'm indexing nothing~ always 0 result~~ 
> > 
> > Frank H於 2015年5月11日星期一 UTC+8下午7時49分44秒寫道: 
> > dear Pat&All how can i define a index whose name is different from it's 
> table name by real_time~ appreciate~ ◑ω◐ 
> > i've worked hard to approach this: 
> > 
> http://www.rubydoc.info/github/pat/thinking-sphinx/ThinkingSphinx/Index#define-class_method
>  
> > i'm using the apartment to do the multitenancy~ my code is as following~ 
> sorry for disturbing~ have a good one~ d(-_^) 
> > 
> > current_tenant = Apartment::Tenant.current 
> > 
> > # Each Tenant instance is tied to a tenant in this example. 
> > 
> > Tenant.find_each do |tenant| 
> > 
> >   # Switch to the appropriate Apartment tenant. 
> > 
> >   Apartment::Tenant.switch tenant.db 
> > 
> >   
> >   ThinkingSphinx::Index.define( 
> > 
> >   :topic, 
> > 
> >   #  with: :active_record, 
> > 
> >   # delta: true, 
> > 
> >   name: "topic_#{tenant.db}", 
> > 
> >   table_name: "topic",(wanted)   
> > 
> >   offset_as: "topic_#{tenant.db}".to_sym, 
> > 
> >   with: :real_time )do 
> > 
> >   
> >     # fields 
> > 
> >     indexes name, sortable: true 
> > 
> >   
> >     # attributes 
> > 
> >     has network_id,created_at, updated_at, :type => :string 
> > 
> >   
> >     # For real-time indices, let's make sure we're using the appropriate 
> tenant. 
> > 
> >     scope { Apartment::Tenant.switch tenant.db; Topic } 
> > 
> >   end 
> > 
> > end if Tenant.table_exists? 
> > 
> >   
> > # Switching back to the original tenant - this is useful in the 
> development 
> > 
> > # environment, as indices (and thus, this file) can be reloaded, and we 
> don't 
> > 
> > # want to always leave our app on our last tenant. 
> > 
> > Apartment::Tenant.switch current_tenant 
> > 
> > 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Thinking Sphinx" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to thinking-sphi...@googlegroups. <http://googlegroups.com/>com 
> <http://googlegroups.com/>. 
> > To post to this group, send email to [email protected]. 
> > Visit this group at http://groups.google.com/group/thinking-sphinx. 
> > For more options, visit https://groups.google.com/d/optout. 
> > 
> > 
> > -- 
> > You received this message because 
> > ... 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Thinking Sphinx" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to [email protected]. 
> > To post to this group, send email to thinkin...@googlegroups. 
> <http://googlegroups.com/>com <http://googlegroups.com/>. 
> > Visit this group at http://groups.google.com/group/thinking-sphinx. 
> > For more options, visit https://groups.google.com/d/optout. 
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Thinking Sphinx" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected]
>
> ...

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/thinking-sphinx.
For more options, visit https://groups.google.com/d/optout.

Reply via email to