2011-02-15 57 views
0

型號:無法在一個特定的索引搜索

class TechRequest < ActiveRecord::Base 
... 
    define_index do 
    ... 
    indexes :hot_request 
    indexes :status_id, :as => :current_status_id 
    ... 
    has :hot_request , :as => :hot_request 
    set_property :delta => true 
    end 

DB:

hot_request - tinyint(1) 

當我執行代碼 -

@query_string = '(@hot_request 1)(@current_status_id 1 | 2 | 3)' 
@tech_requests = TechRequest.search @query_string, :match_mode => :extended 

以下錯誤拋出了控制器:

ThinkingSphinx::SphinxError: index tech_request_core,tech_request_delta: query error: no field 'tech_hot_request' found in schema 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:392:in 'populate' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'call' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'retry_on_stale_index' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:379:in 'populate' 
     from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:167:in 'method_missing' 
     from D:/ruby/lib/ruby/1.8/irb.rb:302:in 'output_value' 
     from D:/ruby/lib/ruby/1.8/irb.rb:151:in 'eval_input' 
     from D:/ruby/lib/ruby/1.8/irb.rb:263:in 'signal_status' 
     from D:/ruby/lib/ruby/1.8/irb.rb:147:in 'eval_input' 
     from D:/ruby/lib/ruby/1.8/irb.rb:146:in 'eval_input' 
     from D:/ruby/lib/ruby/1.8/irb.rb:70:in 'start' 
     from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'catch' 
     from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'start' 
     from D:/ruby/bin/irb:13 
01當我使用 hot_request作爲屬性

搜索工作正常。當我使用@query_string = '(@current_status_id 1 | 2 | 3)'的 搜索也能正常工作。

回答

0

我剛剛碰到類似的問題看 - 有兩個可能的原因,這樣的錯誤,我可以看到。第一個是,根據http://sphinxsearch.com/forum/view.html?id=2103可以使用SQL列的字段或屬性但不是兩者(不克隆它)。另外,這把我難倒了一段時間,是你可能需要指定類型 - 所以,如果hot_request實際上是一個整數,你可能需要有一些像

指標hot_request:如=>小時,:類型=>:整數

或者你得到神祕的錯誤消息

希望這可以幫助別人...