systemadmin.es > Buscador > Buscador WordPress con Sphinx (III)

Buscador WordPress con Sphinx (III)

De nuevo vamos puliendo el buscador con Sphinx integrado en WordPress. Esta vez hemos modificado el fichero para evitar el contenido repetido. Ahora solo muestra una reseña del contenido del articulo con un enlace “Leer mas” para ver el artículo a texto completo.

El nuevo código modificado de search.php es el siguiente:

<?php

   $index = "wp_main";

   include('sphinxapi.php');

   $cl = new SphinxClient();
   $cl->SetServer( "localhost", 3312 );
   $cl->SetMatchMode( SPH_MATCH_ANY  );

        #$cl->SetFilter( 'tema_title', array( 2 ) );
        #$data = implode(" ", $argv);

   $query=strip_tags($_GET['s']);


   $result = $cl->Query( $query, $index );

   if ( $result === false )
   {
      echo "Error en la query: " . $cl->GetLastError() . ".\n";
   }
   else
   {
      if ( $cl->GetLastWarning() )
      {
         echo "Cuidadin: " . $cl->GetLastWarning();
      }

      if ( ! empty($result["matches"]) )
      {
         foreach ( $result["matches"] as $index => $info )
         {
            $search_posts = get_posts('p='.$index);
            foreach( $search_posts as $post ) :
            ?>


            <div class="entry">

            <div class="indicator">•</div>
            
            <h1><a href="<?php the_permalink(); ?>" 
                        id="post-<?php the_ID(); ?>">
            <?php the_title(); ?></a></h1>

            <?php
            $content = apply_filters('the_content', 
                        $post->post_content);
            $content = str_replace(']]>', ']]>', $content);

            $content = strip_tags($content);
            $excerpt_length = 55;

            $qwords=explode(' ', $query, 15);
					
            foreach ($qwords as $qval)
            {
               $content=preg_replace("/([\W]|^)($qval)([\W]|$)/i",
                        " \$1<strong>\$2</strong>\$3",
                        $content);
            }

            $words = explode(' ', $content, $excerpt_length + 1);
					
					
            if (count($words)> $excerpt_length)
            {
               array_pop($words);
               array_push($words, '[...]');
               $content = implode(' ', $words);
            } 

            echo $content;
            echo '<div class="metadata">';
            echo '<a href="';
            echo get_permalink();
            echo '#more-';
            echo $id;
            echo '\" class=\"more-link\">';
            echo 'Leer mas »';
            echo '</a>';
            echo '</div>';
            ?>

            </div>

            <?php endforeach; ?>

         <?php
         }
      }
   }

?>

Lo próximo será merjorar la integración en WordPress desarrolando un sistema para que se instale más facilmente en éste.

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>