Gem: текстовый индекс с принадлежащим оракулом
В документации к Rails gem oracle-extended я нашел это, чтобы создать индекс для нескольких таблиц:
add_context_index :posts,
[:title, :body,
"SELECT comments.author AS comment_author, comments.body AS comment_body FROM comments WHERE comments.post_id = :id"
],
:name => 'post_and_comments_index',
:index_column => :all_text,
:index_column_trigger_on => [:updated_at, :comments_count],
:sync => 'ON COMMIT'
Это работает, если пост имеет много комментариев. Но как мне написать это, если в сообщении есть только один комментарий? Или как насчет отношения через has_many?
Спасибо за вашу помощь.
-e- Просто чтобы попробовать что-то я сделал
add_context_index :posts, [:title, :body]
и получил это исключение:
NativeException: java.sql.SQLException: ORA-06550: line 2, column 13:
PLS-00201: identifier 'CTX_DDL' must be declared
1 ответ
Решение
Вместо того чтобы делать один индекс с объединениями по нескольким таблицам для поиска, я решил индексировать каждый столбец самостоятельно, искать в каждой таблице отдельно и копировать соответствующие идентификаторы во временную таблицу поиска. Это довольно просто и быстро.