Я занимаюсь разработкой Rails v2.3 приложения, которое является службой для поиска информации о проектах , где информация о проектах хранится в базе данных.
В базе данных существует таблица projects
, подобная следующей:
Для удовлетворения требований клиента в эту таблицу необходимо вставить новые данныев полночь каждый день.
Причина создания этих новых записей заключается в том, чтобы приложение Rails могло выполнять поиск проектов по одному слову, помимо поиска по полному имени.
Например, , если поиск по слову " portal ", оба Портал проката автомобилей и Положение отслеживания портала записей должно бытьнайден приложением Rails. В этой базе данных приложения должны быть все записи каждого отдельного слова из project_name
.
Итак, я планирую сгенерировать эти новые записи с помощью , разделивзначение в project_name
столбце (из приведенной выше таблицы projects
) в отдельные слова , а затем использовать каждое отдельное слово в качестве новая запись project_name
при сохранении остальных столбцов записи без изменений.
Например, в приведенной выше таблице, первая запись имеет project_name
" Портал проката автомобилей ", что я собираюсь сделать, это разбить эту строку на 3 словаи создайте следующие три новые записи для вставки в таблицу:
Для этого.Я попытался создать задачу rake , которая получает все записи из исходной таблицы projects
, и для каждой записи задача rake разбивает строковое значение столбца project_name
на слова, затем создайте новые записи со словами и вставьте в таблицу.Моя задача rake выглядит следующим образом:
all_records = ActiveRecord::Base.execute("select * from projects;")
all_records.each do |record|
user_id = record[0]
project_name=record[1]
department = record[2]
other = record[3]
words=project_name.split()
words.each do |word|
sql = "insert into project values (#{user_id},#{word},#{department},#{other});"
ActiveRecord::Base.execute(sql)
end
end
Задача rake хорошо работает , она создает ожидаемые новые записи и вставляется в таблицу projects
, НО проблема в том, что для завершения требуется 36 часов !
Это понятно, поскольку исходная таблица очень очень большая, если разбить строку на слова и создать новую запись, это все равно, что создать таблицу в 3 раза больше (предположим, что каждая строка project_name
имеет 3 слова).
Мой вопрос:
Могут ли некоторые эксперты по Rails предложить мне более эффективный способ достижения новой возможности вставки записи, которую я описал выше?
Или любой новый способ включить поиск по одному слову в моем случае?(Это не тот способ, который я разработал для хранения каждого отдельного слова в базе данных.)