this is actually the fundamental loop

<?php while (have_posts()) : the_post(); ?>

i wish to show 20 posts around the search engine results page, i understand we are able to alter the value on admin panel options. however it can change all i.e. index page and archive page etc. I have to ask them to in a different way.

thanks!

Great reference: http://codex.wordpress.org/The_Loop

Right before you call the while statement, you have to query the posts. So:

  <?php query_posts('posts_per_page=20'); ?>

  <?php while (have_posts()) : the_post(); ?>
    <!-- Do stuff... -->
  <?php endwhile;?>

EDIT: Sorry concerning the pagination, do this:

    <?php 
        global $query_string;
        query_posts ('posts_per_page=20');
        if (have_posts()) : while (have_posts()) : the_post();
    ?>
    <!-- Do stuff -->
    <?php endwhile; ?>

    <!-- pagination links go here -->

    <? endif; ?>

If you won't want to constitute a lot of template files with various loops for various pages and preserve pagination, try http://wordpress.org/extend/plugins/custom-post-limits/