I actually had to do this recently. It's not too difficult to grab all that Matrix data, concatenate it, and save it to your field.
First, backup your database (!). Next, create a new template, enable PHP on it, then put this in it:
<?php
$this->EE =& get_instance();
$channel_id = 1;
$field_id = 20;
$matrix_cols = array(
'col_id_1',
'col_id_2',
'col_id_9'
);
$entries = $this->EE->db->query("
SELECT entry_id
FROM exp_channel_titles
WHERE channel_id = $channel_id
");
if($entries->num_rows() > 0)
{
$cols = implode(", ", $matrix_cols);
foreach($entries->result_array() as $entry)
{
extract($entry);
$matrix = $this->EE->db->query("
SELECT $cols
FROM exp_matrix_data
WHERE field_id = $field_id
AND entry_id = $entry_id
");
if($matrix->num_rows() > 0)
{
$data = '';
foreach($matrix->result_array() as $row)
{
foreach($matrix_cols as $col)
{
$data .= $row[$col].' ';
}
}
echo '<p>Search data for entry '.$entry_id.': '.$data.'</p>';
$this->EE->db->query(
$this->EE->db->update_string('exp_channel_data', array('field_id_'.$field_id => $data), "entry_id = $entry_id")
);
}
}
}
?>
Replace the data inside the three variables at the top with your relevant data, then load your template in the browser. Should fix you up.