2013-03-06 10 views
5

Đang cố gắng sử dụng Nhân sư tư duy để tìm kiếm. Tiếp theo this Railscast bởi TS cài đặt homebrew và MySQL (mặc dù tôi đang sử dụng pg trong ứng dụng của tôi, nó dường như bắt buộc), thêm những dòng này để gemfile tôi:Tư duy Nhân sư - không tìm thấy chỉ mục nào trong tệp cấu hình

gem 'mysql2' 
gem 'thinking-sphinx' 

và đưa những điều sau đây trong mô hình của tôi, bên dưới mọi thứ khác

post.rb

class Post < ActiveRecord::Base 
    #... 

    define_index do 
     indexes content 
     indexes :name 
    end 
end 

Sau đó, tôi đi vào nhà ga và thử ts cào: chỉ số, nhưng tôi nhận được lỗi này:

using config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf'... 
    FATAL: no indexes found in config file '/Users/<personal>/rails_projects/<personal>/config/development.sphinx.conf' 

Fishedaroundon the internet và không tìm thấy nội dung nào được trả lời đúng. Tôi đã thử chạy rake ts: cấu hình (mà không phàn nàn) và sau đó rake ts: index, nhưng nó không hoạt động.

Một số nền: Tôi vừa thay đổi vỏ thiết bị đầu cuối của mình (sử dụng zsh), điều này đã tạo ra tất cả các thay đổi bất ngờ lạ thường. Tôi đã phải cài đặt lại bundler, sau đó re-bundle cài đặt tất cả các đá quý của tôi, sau đó độc lập đá quý cài đặt rake. Sau đó, tôi gói cập nhật cho biện pháp tốt. Bây giờ rake dường như làm việc, nhưng tôi vẫn nhận được lỗi.

Các cấu hình tập tin lỗi được phàn nàn về:

indexer 
{ 
} 

searchd 
{ 
    listen = 127.0.0.1:9306:mysql41 
    log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.log 
    query_log = /Users/<personal>/rails_projects/<personal>/log/development.searchd.query.log 
    pid_file = /Users/<personal>/rails_projects/<personal>/log/development.sphinx.pid 
    workers = threads 
    binlog_path = /Users/<personal>/rails_projects/<personal>/tmp/binlog/development 
} 

Bất cứ ý tưởng gì đang xảy ra/những gì mã câu trả lời có thể là trong?

THÚ VỊ CẬP NHẬT - Tôi làm theo các Q & A trên this Google Group nhập đường ray giao diện điều khiển của tôi và gõ "Post.sphinx_indexes.length", nhưng tôi đã nhận lỗi rất khác nhau này lại. Có vẻ như mô hình của tôi bằng cách nào đó không nhận được quyền truy cập vào đá quý?

NoMethodError: undefined method `define_index' for #<Class:0x007f9c06c611b0> 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.11/lib/active_record/dynamic_matchers.rb:55:in `method_missing' 
     from /Users/<personal>/rails_projects/<personal>/app/models/post.rb:55:in `<class:Post>' 
     from /Users/<personal>/rails_projects/<personal>/app/models/post.rb:13:in `<top (required)>' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:469:in `load' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:469:in `block in load_file' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:639:in `new_constants_in' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:468:in `load_file' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:353:in `require_or_load' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:502:in `load_missing_constant' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:192:in `block in const_missing' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:190:in `each' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:190:in `const_missing' 
     from (irb):1 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' 
     from /Users/<personal>/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/gems/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' 
     from script/rails:6:in `require' 
     from script/rails:6:in `<main>'irb(main):002:0> 

Trả lời

5

cũng đã đăng câu hỏi này lên Nhóm suy nghĩ nhân sư Google và nhận câu trả lời ở đó, vì vậy tôi sẽ dán nó bên dưới. Sau khi trả lời câu hỏi trên, tôi gặp phải một lỗi khác và đã theo dõi nó ở đó, vì vậy nếu có ai muốn biết thêm thông tin, this discussion hy vọng sẽ tiếp tục hữu ích.

Và tôi trích dẫn:

Hi Sasha The issue is that Thinking Sphinx's documentation is mostly for v2, but v3 is what you're using (and much better). Index definitions are now located in app/indices - the README is your best source of information (but anything it doesn't cover is probably the same as earlier versions): https://github.com/pat/thinking-sphinx/blob/master/README.textile

Have a read through of that, move your index definition, and you should be good to go. Any further issues, get in touch :)

-- Pat

Sau khi vấn đề đó, tôi chạy vào thế này, đó là rõ ràng vì Sphinx không có quyền truy cập vào cơ sở dữ liệu PostgreSQL của tôi.

indexing index 'post_core'... 
ERROR: source 'post_core_0': unknown type 'pgsql'; skipping. 
ERROR: index 'post_core': failed to configure some of the sources, will not index. 
total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg 
total 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg 

tôi cố định này bằng cách gỡ bỏ cài đặt Sphinx và cả đá quý (thinking_sphinx và mysql2), sau đó nấu cài đặt Sphinx với cả hai mysql và pgsql cờ, sau đó cài đặt lại viên ngọc.

Sau đó, rake ts: index làm việc như một sự quyến rũ.

2

Một nguồn lỗi có thể khác là đặt tên cho thư mục và tệp. Một khoảng trống thừa hoặc các dấu hiệu được đánh vần bằng chữ 'i' sẽ không nhận ra các tệp và do đó không tạo ra bất kỳ chỉ mục nào.

Những điều cần có yonks để xem ...

[và trong trường hợp của tôi xảy ra không thường xuyên như vậy!]

+0

Cảm ơn Jerome ... chính xác những gì tôi đã làm — chỉ số sai chính tả. – backwardm

+0

Một trường hợp số nhiều là, tôi tin rằng, đã xác định sai. Các chỉ mục sẽ dẫn đến ít lỗi hơn và là rails-ish. – Jerome

+0

Tôi đã đi với 'chỉ số' vì 'chỉ mục' cũng là hành động lập chỉ mục (xử lý các chỉ mục) và tôi muốn tránh nhầm lẫn. Do đó, tôi cố gắng sử dụng các chỉ số như số nhiều của chỉ mục bất cứ khi nào có thể. – pat