La verdadera diferencia son las metodologías de escaneo. Para la búsqueda de texto completo, las palabras (términos) se utilizan como claves hash - cada uno de los cuales está asociado con una serie de documentos de las claves (términos) aparece en su siguiente manera:.
Document sets = {d1, d2, d3, d4, ... dn}
Term sets = {t1, t2, t3, .. tn}
Ahora término-documento matriz (que miembro de término de los cuales documento) se puede representar como:
t1 -> {d1, d5, d9,.. dn}
t2 -> {d11, d50, d2,.. dn}
t3 -> {d23, d67, d34,.. dn}
:
tn -> {d90, d87, d57,.. dn}
Cuando entra la petición pidiendo "Tráeme todos los documentos que contienen la palabra t1/term" - entonces el conjunto de documentos se devuelve {d1, d5, d9,.. dn
}.
Podría hackear un esquema de tabla desnormalizada para almacenar documentos: cada fila en la tabla MySQL se considerará como "documento" y una columna TEXTO podría contener un párrafo, etc. El índice invertido contendrá los términos como claves y los identificadores de filas como los identificadores del documento.
Recuerde que esta consulta SQL tendrá más o menos O (1) rendimiento. La consulta será independiente de
- Número de palabras/términos en la columna TEXT
- el número de filas/documentos que coincidan con los criterios
- la longitud de las palabras/términos
Para Por ejemplo, este SQL podría ser disparado para extraer todas las filas que coincidan con la palabra dada XYZ:
SELECT *
FROM my_table
WHERE MATCH (my_text_column) against ('XYZ' IN boolean mode) ;
Advertencia: Si agregue ORDER BY a esta consulta, sus tiempos de ejecución variarán según los diversos parámetros, uno de los cuales es el número de filas/documentos coincidentes. Así que ten cuidado.
Sin embargo, The LIKE no tiene nada de esto. Se ve obligado a escanear linealmente la oración/cadena y encontrar todos los términos coincidentes. Agregar comodín se suma al desastre. Funciona muy bien para cadenas de pequeña longitud, como se puede imaginar, pero fracasará miserablemente en oraciones más largas. Y definitivamente no es comparable cuando tiene un párrafo o una página entera de texto, etc.
ranking se expliquen mejor en @ VipinJain's [ respuesta] (http://stackoverflow.com/a/35765302/212044) – ychaouche