2011-07-16 61 views
11

realidad nunca he escuchado una respuesta directa en este caso, sólo hay que buscar texto completo un par de columnas con múltiples palabras "Nombre Apellido"MySQL búsqueda de texto completo varias palabras

$sql = mysql_query("SELECT * FROM 
        patient_db 
        WHERE MATCH (Name, id_number) 
        AGAINST ('% $term %' IN BOOLEAN MODE);"); 

Pero no se puede ejecutar el consulta si ingreso más de una palabra aquí.

Respuesta

16
$sql = mysql_query("SELECT * FROM 
     patient_db WHERE 
     MATCH (Name, id_number) 
     AGAINST ('+first_word +second_word +third_word' IN BOOLEAN MODE);"); 

y si usted quiere hacer la búsqueda exacta:

$sql = mysql_query("SELECT * 
        FROM patient_db 
        WHERE MATCH (Name, id_number) 
        AGAINST ('"exact phrase"' IN BOOLEAN MODE);"); 
+1

¿Puede alguien aclararme si también hay un límite de cuántos términos puede buscar en 1 EMPAREJAR CONTRA la consulta? En el ejemplo de esta respuesta, tienes third_word que también está funcionando en mi propia consulta, pero cuando pongo el + fourth_word e incluso si existe en las columnas, devuelve el resultado vacío. – vincent

+1

"frase exacta" no significa frase exacta sin ningún signo (+/-) se tratará como un OR. no hay una frase exacta en la búsqueda de texto completo, solo todas las palabras, algunas palabras, ninguna de las palabras. – Gamesh

+1

Esto se cambia en un período de 5 años – Vineet1982

4
SELECT * 
FROM patient_db 
WHERE MATCH (Name, id_number) 
     AGAINST ("Firstname Lastname" IN BOOLEAN MODE); 

Las comillas dobles son importantes. Esto busca literalmente la frase "nombre apellido". No necesita los signos de porcentaje.

Si nos fijamos para "Nombre Apellido blahblahblah blahblah", la cláusula AGAINST() tiene que tener este aspecto:

AGAINST ('+Firstname +Lastname' IN BOOLEAN MODE); 

tienen mirada en el MySQL docs on full text search para obtener más información.

Otra cosa: ¿por qué tiene la columna id_number en su partido?

+0

Hola lo siento he publicado que antes de ir a la cama anoche. Esto todavía no funciona para mí, solo tengo un campo de búsqueda llamado $ term y ambos nombres están en la misma columna mySQL – iamwhitebox

Cuestiones relacionadas