2012-03-12 1 views
3

응용 프로그램은 Rails 2.3.12 및 ThinkingSphinx 1.4.11을 사용합니다. 제품 모델에는 단 하나의 색인 만 있으며 devel 상자에서 제대로 작동합니다. 물론Sphinx Daemon이 (가) 오류를 반환했습니다. index product_core : INTERNAL ERROR : 들어오는 스키마가 일치하지 않습니다. 스테이징 서버에서만

>> Product.search('music') 
Sphinx Sphinx Daemon returned error: index product_core: INTERNAL ERROR: incoming-  schema mismatch (in=uint account_id:[email protected], my=uint account_id:[email protected]) 
ThinkingSphinx::SphinxError: index product_core: INTERNAL ERROR: incoming-schema mismatch (in=uint account_id:[email protected], my=uint account_id:[email protected]) 
from /var/www/rebelshop_staging/rebelshop/shared/bundle/ruby/1.8/gems/thinking-sphinx-1.4.11/lib/thinking_sphinx/search.rb:417:in `populate' 
from /var/www/rebelshop_staging/rebelshop/shared/bundle/ruby/1.8/gems/thinking-sphinx-1.4.11/lib/thinking_sphinx/search.rb:562:in `call' 
from /var/www/rebelshop_staging/rebelshop/shared/bundle/ruby/1.8/gems/thinking-sphinx-1.4.11/lib/thinking_sphinx/search.rb:562:in `retry_on_stale_index' 
from /var/www/rebelshop_staging/rebelshop/shared/bundle/ruby/1.8/gems/thinking-sphinx-1.4.11/lib/thinking_sphinx/search.rb:404:in `populate' 
from /var/www/rebelshop_staging/rebelshop/shared/bundle/ruby/1.8/gems/thinking-sphinx-1.4.11/lib/thinking_sphinx/search.rb:167:in `method_missing' 
from /usr/local/lib/ruby/1.8/irb.rb:310:in `output_value' 
from /usr/local/lib/ruby/1.8/irb.rb:159:in `eval_input' 
from /usr/local/lib/ruby/1.8/irb.rb:271:in `signal_status' 
from /usr/local/lib/ruby/1.8/irb.rb:155:in `eval_input' 
from /usr/local/lib/ruby/1.8/irb.rb:154:in `eval_input' 
from /usr/local/lib/ruby/1.8/irb.rb:71:in `start' 
from /usr/local/lib/ruby/1.8/irb.rb:70:in `catch' 
from /usr/local/lib/ruby/1.8/irb.rb:70:in `start' 
from /usr/local/bin/irb:13 

난 후 같은 인덱스를 생성하는 것을 알고 : 나는군요 콘솔을 레일에 가기 후에

bundle exec rake ts:conf RAILS_ENV=staging 
bundle exec rake ts:index RAILS_ENV=staging 
bundle exec rake ts:start RAILS_ENV=staging 

: cap staging deploy 후 나는 데몬, 서버에 설정을 생성하는 인덱스를 생성하고 시작입니다 각 cap staging deploy은 차선책이며 카피 스트라노 스테이징 구성 (공유 섹션, 링크 등)에서 해결해야하지만 지금은 수동으로 작업하고 싶습니다. 그런 다음 작업을 자동화합니다.

답변

3

동일한 오류가 발생했습니다. 한 번 색인으로, 다른 하나는 속성으로 동일한 필드에 대해 2 개의 색인을 작성했기 때문입니다.

Thinking Sphinx 구문은 일반적인 sphinx.conf 구문과 상당히 다르므로 매우 혼란 스러울 수 있습니다. 일반 sphinx.conf의 경우 일반 필드를 생성해야하며 가중치로 사용하려면 CRC32 정수와 동일한 필드를 만들어야합니다.

Thinking Sphinx에서는 이것을 할 필요가 없습니다. ACCOUNT_ID의 경우

나는 당신이 두 번 따라서 오류를 만든 것 같은데요 위에, 당신은 단지 모델의 define_index 블록에 한 번 만들어야합니다

has account_id 

을 아니면 ACCOUNT_ID 필요한 경우 , 이미 정수의 경우 :type => :integer이 필요하지 않습니다

indexes account_id 
has account_id, :type => :integer, :as => :account_id_attribute 

,하지만 당신이 목적을 계량 하나에 정수가 아닌 필드를 켤 수 있기 때문에 나는 그것을 왼쪽 : 필드는 뭔가 다른, 스핑크스 속성에 대한 또 다른 별칭을 만들 exampl 용 e :

has "CRC32(media)", :type => :integer, :as => :media 
+0

감사합니다. 나는 그것을 해결할 수 있었지만, 그것은 오래 전이었고, 그래서 나는 심지어 원인을 기억하지 못한다. 그것은 내 옛 직업 이었기 때문에 나는 그것을 확인하기 위해 레포에 접근 할 필요가 없다. 어쨌든 유익한 대답은 비슷한 문제를 다루는 다른 누군가에게 도움이 될 수 있습니다. –

+0

저를 구했습니다! 고맙습니다. – grilix