Мне не удалось создать индекс с think_sphinx для простой полиморфной схемы ниже.(Примечание: я могу создать индекс из моделей has_many, но я хочу создать свои индексы из модели 'own_to' (Комментарий).)
Для простоты я создал пример проекта со схемой:
create_table "articles", :force => true do |t|
t.string "title"
t.text "body"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "comments", :force => true do |t|
t.text "content"
t.integer "commentable_id"
t.string "commentable_type"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "photos", :force => true do |t|
t.string "title"
t.datetime "created_at"
t.datetime "updated_at"
end
Мои примеры моделей и индексов:
class Article < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Photo < ActiveRecord::Base
has_many :comments, :as => :commentable
end
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
define_index do
indexes commentable_type, :as => :commentable_type
has commentable_id, :type => :integer, :as => :commentable_id
indexes commentable.title
end
end
У меня есть 1 статья с 1 комментарием и 1 фотография с 1 комментарием, для теста.Проблема в том, что я не смог создать индекс с ruby '1.9.2', rails '3.1.0' иinking_sphinx '2.0.5'.Обратите внимание, я пытался создать индекс с 0,99 и 2,0,1 бета-версиями sphinx.
Я также пробовал article.title и photo.title для проблемной строки.Ожидание рабочих ответов.
Ошибка:
(in /Users/mustafat/Desktop/xxx-meta/testlog)
Generating Configuration to /Users/mustafat/Desktop/xxx-meta/testlog/config/development.sphinx.conf
Sphinx 2.0.1-beta (r2792)
Copyright (c) 2001-2011, Andrew Aksyonoff
Copyright (c) 2008-2011, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/Users/mustafat/Desktop/xxx-meta/testlog/config/development.sphinx.conf'...
FATAL: no indexes found in config file '/Users/mustafat/Desktop/xxx-meta/testlog/config/development.sphinx.conf'
Failed to start searchd daemon. Check /Users/mustafat/Desktop/xxx-meta/testlog/log/searchd.log.
Failed to start searchd daemon. Check /Users/mustafat/Desktop/xxx-meta/testlog/log/searchd.log
, если я попытаюсь с кодом ниже:
class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
define_index do
indexes commentable_type, :as => :commentable_type
has commentable_id, :type => :integer, :as => :commentable_id
indexes article.title
end
end
Я получаю ошибку ниже:
(in /Users/mustafat/Desktop/xxx-meta/testlog)
Generating Configuration to /Users/mustafat/Desktop/xxx-meta/testlog/config/development.sphinx.conf
Sphinx 2.0.1-beta (r2792)
Copyright (c) 2001-2011, Andrew Aksyonoff
Copyright (c) 2008-2011, Sphinx Technologies Inc (http://sphinxsearch.com)
using config file '/Users/mustafat/Desktop/xxx-meta/testlog/config/development.sphinx.conf'...
indexing index 'comment_core'...
ERROR: index 'comment_core': sql_range_query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' `comments`.`id`, `comments`.`commentable_id` ORDER BY NULL' at line 1 (DSN=mysql://root:***@localhost:3306/xxx_testlog).
total 0 docs, 0 bytes
total 0.003 sec, 0 bytes/sec, 0.00 docs/sec
skipping non-plain index 'comment'...
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
Failed to start searchd daemon. Check /Users/mustafat/Desktop/xxx-meta/testlog/log/searchd.log.
Failed to start searchd daemon. Check /Users/mustafat/Desktop/xxx-meta/testlog/log/searchd.log