Adding HTML to the search page

Here is one my function what i use to play and manipulate with search. Maybe can help.

/*** Suggested Keywords for search ***/
function get_suggested_keywords(){
    /* Suggested keywords + tags */
    if(isset($_GET['s']) && !empty($_GET['s']))
    {
        $search=preg_replace("[^a-zA-Z0-9\ ]","",urldecode($_GET['s']));
        if(!empty($search))
        {
            $words=array_map("trim",explode(" ",$search));
            if(isset($words[1]) && !empty($words[1]))
            {
                $tags=array();
                foreach($words as $tag)
                {
                    $tags[]= '<a href="' . get_site_url() . '/?s=" . $tag . "" title="' . $tag . '" rel="search">' .$tag. '</a>';
                }
                echo '<h3 class="general-title">
                        <span>'.__('Suggested keywords', 'creativform').'</span>
                    </h3>'."\r\n";
                echo '<div class="tagcloud">'.join($tags, " &nbsp; ").'</div>';
            }
        }
    }
}

I have a lot of variations of this but you can use this keywords to call query and play with that data.

UPDATE:

If you need to reorganize your content and add extra content into your post you need first to loop all posts from database, save in array, add extra contet in array and list all data in HTML in new loop. Here is example:

function shuffle_assoc($list) { 
    if (!is_array($list)) return $list; 

    $keys = array_keys($list); 
    shuffle($keys); 
    $random = array(); 
    foreach ($keys as $key) $random[$key] = $list[$key];
    return $random; 
} 
$query=array();
if(have_posts()){
    #### Get posts and save for manipulation ####
    while (have_posts()){ 
        the_post();
        // get the ID
        $ID = get_the_ID();
        // get thumbnail
        $thumb = wp_get_attachment_image_src( get_post_thumbnail_id(), 'large' );
        if(isset($thumb[0]) && !empty($thumb[0])) 
              $thumbnail=$thumb[0]; 
        else 
              $thumbnail=false;
        // save in object array
        $query[]=(object)array(
            'thumbnail'             =>  $thumbnail,
            'post_permalink'        =>  post_permalink($ID),
            'the_title_attribute'   =>  the_title_attribute(array('echo' => 0)),
            'the_title'             =>  get_the_title($ID),
            'the_content'           =>  get_the_content($ID),
            'the_date'              =>  get_the_date($ID),
        );
    }

    #### Add new content inside posts ####
    $query[]=(object)array(
            'thumbnail'             =>  "SOMETHING 1",
            'post_permalink'        =>  "SOMETHING 1",
            'the_title_attribute'   =>  "SOMETHING 1",
            'the_title'             =>  "SOMETHING 1",
            'the_content'           =>  "SOMETHING 1",
            'the_date'              =>  "SOMETHING 1",
        );
    $query[]=(object)array(
            'thumbnail'             =>  "SOMETHING 2",
            'post_permalink'        =>  "SOMETHING 2",
            'the_title_attribute'   =>  "SOMETHING 2",
            'the_title'             =>  "SOMETHING 2",
            'the_content'           =>  "SOMETHING 2",
            'the_date'              =>  "SOMETHING 2",
        );

    #### Randomize content (OPTIONAL - delete if you don't need or just comment) ####
    $query=shuffle_assoc($query);

    #### Loop and display in your HTML ####
    foreach($query as $fetch){
        echo $fetch->thumbnail.'<br>';
        echo $fetch->post_permalink.'<br>';
        echo $fetch->the_title_attribute.'<br>';
        echo $fetch->the_title.'<br>';
        echo $fetch->the_content.'<br>';
        echo $fetch->the_date.'<br>';

        echo '<hr>';
    }
}

In area where you add new content, you can add manualy or to use some loop with check of keywords to grab other content in similar way and store in $query. You can use this code in posts lists, page lists, search, etc. with small modification in WP_query();