思考sphinx未知类型'mysql'; 跳绳

Jen*_*unt 19 ruby thinking-sphinx ruby-on-rails-3

我使用的是ts版本2.0.5,rails 3.0.9和mysql2 0.2.11

当尝试使用rake ts:index创建索引时,出现以下错误:

ERROR: source 'technical_core_0': unknown type 'mysql'; skipping.
Run Code Online (Sandbox Code Playgroud)

我的development.sphinx.conf包含:

source technical_core_0
{
  type = mysql
  sql_host = localhost
  sql_user = root
  sql_pass = 
  sql_db = ps_development
  sql_sock = /tmp/mysql.sock
  sql_query_pre = SET NAMES utf8
  sql_query_pre = SET TIME_ZONE = '+0:00'
  sql_query = SELECT SQL_NO_CACHE `technicals`.`id` * CAST(1 AS SIGNED) + 0 AS `id` , `orders`.`name` AS `author`, `technicals`.`id` AS `sphinx_internal_id`, 0 AS `sphinx_deleted`, 488243725 AS `class_crc`, IFNULL(`orders`.`name`, '') AS `author_sort`, `technicals`.`order_id` AS `order_id`, UNIX_TIMESTAMP(`technicals`.`created_at`) AS `created_at`, UNIX_TIMESTAMP(`technicals`.`updated_at`) AS `updated_at` FROM `technicals` LEFT OUTER JOIN `orders` ON `orders`.`id` = `technicals`.`order_id` WHERE (`technicals`.`id` >= $start AND `technicals`.`id` <= $end) GROUP BY `technicals`.`id`, , `orders`.`name`, `technicals`.`id`, `orders`.`name`, `technicals`.`order_id`, `technicals`.`created_at`, `technicals`.`updated_at` ORDER BY NULL
  sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1) FROM `technicals` 
  sql_attr_uint = sphinx_internal_id
  sql_attr_uint = sphinx_deleted
  sql_attr_uint = class_crc
  sql_attr_uint = order_id
  sql_attr_timestamp = created_at
  sql_attr_timestamp = updated_at
  sql_attr_str2ordinal = author_sort
  sql_query_info = SELECT * FROM `technicals` WHERE `id` = (($id - 0) / 1)
}
Run Code Online (Sandbox Code Playgroud)

这有点奇怪,因为我的database.yml文件包含mysql2和root密码.

你能帮助我度过这个阶段吗?我还尝试使用以下命令创建sphinx.yml文件:

development:
 adapter: mysql2
Run Code Online (Sandbox Code Playgroud)

但这也失败了.

- 更新 -

我将其添加到开发初始化文件中:

 ThinkingSphinx.database_adapter = :mysql2
Run Code Online (Sandbox Code Playgroud)

这给出了仅支持MySQL的错误.

dak*_*dad 64

根据此处的链接,您可以在homebrew(mac)上执行以下操作:

brew install sphinx --with-mysql
Run Code Online (Sandbox Code Playgroud)

这对我有用:)

  • 由于已经安装了sphinx搜索,不得不"重新安装sphinx --mysql". (5认同)
  • 你可以随时`酿造选项[包名],这将给你所有可用的标志.在这种情况下--mysql或--postgres (2认同)
  • 不推荐使用--mysql开关.现在使用--with-mysql. (2认同)

bas*_*man 14

在编译Sphinx时,您应该指定--with-mysql标志.

$ ./configure --with-mysql
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)

您可能需要指定MySQL库的包含文件的位置.例如,在全新安装OS X时:

$ ./configure --with-mysql=/opt/local/include/mysql5
Run Code Online (Sandbox Code Playgroud)

  • 不,思考Sphinx是Sphinx搜索Ruby的接口,您需要在系统上安装Sphinx. (2认同)