Как настроить PostgreSQL или MySQL для настройки базы данных с помощью Sphinx?

Мне действительно нужна помощь в установке Sphinx и его запуске.

Я использую Rails 3 и следую следующим инструкциям: http://freelancing-god.github.com/ts/en/quickstart.html для установки Sphinx.

Thinking Sphinx было легко установить, так как это жемчужина. Однако в руководстве говорится, что для начала работы мне необходимо установить Sphinx и Thinking Sphinx (правда ли это?). Я проверил railscast Райана Бейтса для Thinking Sphinx, и он только установил плагин и сразу же приступил к работе.

В любом случае, я установил Sphinx через MacPorts, и вот доказательство:

...
  --->  Configuring mysql5
  --->  Building mysql5
  --->  Staging mysql5 into destroot
  --->  Installing mysql5 @5.1.57_0
   The MySQL client has been installed.

...

--->  Installing sphinx @0.9.9_0+mysql5
--->  Activating sphinx @0.9.9_0+mysql5
--->  Cleaning sphinx

Он автоматически настроил Sphinx с mysql5. У меня есть и mySQL, и POSTgreSQL.

Теперь следующим шагом было rake thinking_sphinx:index после настройки индекса в моей пользовательской модели, который выглядит следующим образом:

  define_index do
   indexes year
   indexes major
   indexes books_buy
   indexes books_sell
   indexes facebook
   indexes restaurants
   indexes interests

   end

Однако rake thinking_sphinx:index дал мне это:

rake aborted!
Don't know how to build task 'thinking_sphnix:index'

а потом

rake aborted!
no such file to load -- sqlite3

Итак, я решил, что моя база данных все еще настроена на sqlite3. Поэтому я переключил гем на mySQL и отредактировал файл database.yml, чтобы он выглядел следующим образом:

# Switched over to mysql

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
development:
  adapter: mysql5
  encoding: utf8
  database: sphinx_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

test:
  adapter: mysql5
  encoding: utf8
  database: sphinx_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql5
  encoding: utf8
  database: sphinx_production
  pool: 5
  username: root
  password: 
  socket: /tmp/mysql.sock

и я получил эти ошибки:

rake aborted!
Please install the mysql5 adapter: `gem install activerecord-mysql5-adapter` (no such file to load -- active_record/connection_adapters/mysql5_adapter)

и

    ERROR:  Could not find a valid gem 'activerecord-mysql5-adapter' (>= 0) in any repository
ERROR:  Possible alternatives: activerecord-jdbcmysql-adapter, activerecord-nulldb-adapter, activerecord-odbc-adapter, activerecord-jdbc-adapter, activerecord-postgis-adapter
Tony-Ngs-MacBook-Air:sample_app TonyNg$ gem install activerecord-nulldb-adapter

Любые советы будут щедрыми и полезными. Также был бы готов переключиться на PostgreSQL, если бы была предоставлена ​​помощь. Спасибо!


person Tony    schedule 10.09.2011    source источник
comment
Итак, вы решили проигнорировать сообщение об ошибке, которое точно говорит вам, что делать? Пожалуйста, установите адаптер mysql5: gem install activerecord-mysql5-adapter   -  person Brad Mace    schedule 10.09.2011
comment
Нет, я тоже так пробовал и получил: ERROR: Could not find a valid gem 'activerecord-mysql5-adapter' (>= 0) in any repository ERROR: Possible alternatives: activerecord-jdbcmysql-adapter, activerecord-nulldb-adapter, activerecord-odbc-adapter, activerecord-jdbc-adapter, activerecord-postgis-adapter   -  person Tony    schedule 10.09.2011
comment
во-первых, sphinx поддерживает только mysql и postgresql, а не sqlite3. также, чтобы проверить, установили ли вы Sphinx, есть ли у вас searchd в вашем пути? Это демон поиска сфинкса. Похоже, вам нужно создать базу данных MySQL для разработки, что вам нужно сделать с помощью командной строки mysql.   -  person Cody Caughlan    schedule 10.09.2011
comment
@ Коди Коглан. Да, у меня есть searchd в opt/local/bin. И я только что создал базу данных MySQL для разработки. И да, я понимаю, что sphinx поддерживает только эти два варианта.   -  person Tony    schedule 10.09.2011


Ответы (1)


Вам нужно указать либо mysql, либо mysql2 в качестве вашего адаптера - и включить любой гем (те же имена, что и у адаптеров) в ваш Gemfile. Я рекомендую mysql2, так как он активно поддерживается, но имейте в виду, что если вы используете Rails 3.0.x, то вы должны использовать версию 0.2.x mysql2. Если вы используете Rails 3.1, используйте mysql2 0.3.x.

person pat    schedule 10.09.2011
comment
Отличный совет! Вот оно! Я действительно ценю помощь. Версия gemfile и часть адаптера меня действительно смутили. - person Tony; 11.09.2011