Не удается выполнить поиск по определенному индексу - PullRequest
0 голосов
/ 15 февраля 2011

Модель:

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

Поиск работает нормально, когда я использую hot_request в качестве атрибута. поиск также работает нормально, когда я использую @query_string = '(@current_status_id 1 | 2 | 3)'.

1 Ответ

0 голосов
/ 27 апреля 2011

Я только что столкнулся с похожими проблемами - есть две возможные причины этой ошибки, которые я вижу.Во-первых, согласно http://sphinxsearch.com/forum/view.html?id=2103 вы можете использовать столбец sql в качестве поля или атрибута, но не оба (без клонирования).Другое, которое меня некоторое время сбивало с толку, заключается в том, что вам может потребоваться указать тип - поэтому, если hot_request на самом деле является целым числом, вам, вероятно, понадобится что-то вроде

indexes hot_request: as => hr: type =>: integer

или вы получите это загадочное сообщение об ошибке

Надеюсь, это кому-нибудь поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...