Cree preguntas relacionadas con el estilo SO

Stack Overflow ofrece preguntas relacionadas (en el lado derecho de esta pregunta). He estado intentando recrear esto usando este código PHP donde $question_title es el título del usuario de la pregunta:

<?php

$where='';

$question_title = preg_split('/[\s]+/',$question_title); 
$total_keywords = count($question_title);

foreach($question_title as $key=>$question_title) {
    $where .= "`questiontitle` LIKE '%$question_title%'";
    if ($key != ($total_keywords - 1)) {
        $where .= " AND ";
    }
}

$results="SELECT `questiontitle` FROM questions WHERE $where";

$results_num = ($results=mysql_query($results)) ? mysql_num_rows($results) : 0;
echo $results;

if ($results_num == 0) {                
    return false;       
} else {
    while ($row=mysql_fetch_assoc($results)) {
        echo $row['questiontitle'];
    }
}

?>

El problema es que este código solo devuelve la pregunta actual. Supongo que la condición LIKE en mi consulta es demasiado específica. ¿Cómo cambiaría esto para permitir que aparezcan preguntas con solo unas pocas palabras comunes?

preguntado el 01 de febrero de 12 a las 04:02

foreach($question_title as $key=>$question_title) Por favor, no oculte nombres de variables como ese, hace llorar al bebé StackOverflow. -

Estás usando el mismo nombre de variable para los valores individuales en tu ciclo, y lo que estás iterando. No hagas eso. -

@Amber ok, pero ¿solucionará esto el problema? -

No, por eso esto es un comentario y no una respuesta. -

1 Respuestas

En primer lugar, ¿tiene preguntas coincidentes en su base de datos? Y para resolver su problema, intente usar FULLTEXT buscar. Necesitas configurar FULLTEXT indexar en la columna de búsqueda y luego usar

SELECT * FROM table
WHERE MATCH (column_name) AGAINST ('keyword') syntax.  

Consulte este enlace para obtener más detalles. Búsqueda de MySQL FULLTEXT

Respondido 01 Feb 12, 09:02

gracias, pero ¿cómo puedo configurar mi columna en FULLTEXT? ¿Hay una declaración SQL? Kirby

Los índices de texto completo solo se pueden usar con tablas MyISAM y solo se pueden crear para columnas CHAR, VARCHAR o TEXT. Se puede dar una definición de índice FULLTEXT en la instrucción CREATE TABLE cuando se crea una tabla, o agregar más tarde usando ALTER TABLE o CREATE INDEX. revisa este enlace - Búsqueda por propiedades - Uday Sawant

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.