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 ответ

Решение

Вместо того чтобы делать один индекс с объединениями по нескольким таблицам для поиска, я решил индексировать каждый столбец самостоятельно, искать в каждой таблице отдельно и копировать соответствующие идентификаторы во временную таблицу поиска. Это довольно просто и быстро.

Другие вопросы по тегам