Hola luisdelbar:
A últimas fechas he venido observando que las preguntas con respecto a búsquedas de texto se han multiplicado, sin embargo no entiendo por qué la insistencia de utilizar LIKE en lugar de MATCH-AGAINST... en más de una ocasión se ha mencionado que hacer
LIKE '%algo%' es completamente ineficiente, pues obliga al motor a hacer una búsqueda exhaustiva sobre la tabla... lo que afecta enormemente el rendimiento del servidor.
Creo que el problema es que no se han tomado el tiempo en experimentar las enormes ventajas que proporcionan las búsquedas de texto completo.
Luis, para tu ejemplo, no mencionas que son T1 y T2 pero puedo suponer que se trata de dos campos en tu tabla. quiero imaginar que en uno de ellos almacenas el título del libro y en otro el o los autores. Checa este script:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.11 sec)
-> ('Critical Thinking Introduction','Alec Fisher'),
-> ('otro libro','Fisher'),
-> ('continuación libro','Alec'),
-> ('otro libro más','otro autor'),
-> ('Critical Thinking "Introduction"','Alec "el escritor" Fisher'),
-> ('Alec Fisher', 'Critical Thinking Introduction');
Query OK, 6 rows affected (0.00 sec)
+----+----------------------------------+--------------------------------+
| id | titulo | autores |
+----+----------------------------------+--------------------------------+
| 1 | Critical Thinking Introduction | Alec Fisher |
| 2 | otro libro | Fisher |
| 3 | continuación libro | Alec |
| 4 | otro libro más | otro autor |
| 5 | Critical Thinking "Introduction" | Alec "el escritor" Fisher |
| 6 | Alec Fisher | Critical Thinking Introduction |
+----+----------------------------------+--------------------------------+
+----+----------------------------------+--------------------------------+
| id | titulo | autores |
+----+----------------------------------+--------------------------------+
| 1 | Critical Thinking Introduction | Alec Fisher |
| 2 | otro libro | Fisher |
| 3 | continuación libro | Alec |
| 5 | Critical Thinking "Introduction" | Alec "el escritor" Fisher |
| 6 | Alec Fisher | Critical Thinking Introduction |
+----+----------------------------------+--------------------------------+
+----+----------------------------------+--------------------------------+
| id | titulo | autores |
+----+----------------------------------+--------------------------------+
| 1 | Critical Thinking Introduction | Alec Fisher |
| 2 | otro libro | Fisher |
| 3 | continuación libro | Alec |
| 5 | Critical Thinking "Introduction" | Alec "el escritor" Fisher |
| 6 | Alec Fisher | Critical Thinking Introduction |
+----+----------------------------------+--------------------------------+
Observa que estoy utilizando el tipo de búsqueda IN BOOLEAN MODE. Independientemente del orden en que ponga el texto a buscar me regresa los registros que contienen al menos una de las palabras a buscar.
Recuerda (o conoce si es que no lo sabes) que aquí no se ordenan registros automáticamente para ordenarlos por relevancia decrecente, aunque podrías poner algo como esto:
Código Python:
Ver originalORDER BY
MATCH (titulo, autores) AGAINST ('Fisher Alec' IN BOOLEAN MODE) DESC
La expresión "equivalente" para hacer esto mismo con LIKE sería:
Código MySQL:
Ver original -> autores
LIKE '%Alec%'; +----+----------------------------------+--------------------------------+
| id | titulo | autores |
+----+----------------------------------+--------------------------------+
| 1 | Critical Thinking Introduction | Alec Fisher |
| 2 | otro libro | Fisher |
| 3 | continuación libro | Alec |
| 5 | Critical Thinking "Introduction" | Alec "el escritor" Fisher |
| 6 | Alec Fisher | Critical Thinking Introduction |
+----+----------------------------------+--------------------------------+
Pero aquí no hay modo de saber la relevancia de los resultados obtenidos.
Además, puedes utilizar muchos operadores para las búsquedas booleanas (+, -, <, >, ~, *, (, ), etc.) para hacer aun más exactas tus búsquedas, te recomiendo que le des un vistazo a la documentación oficial para ver todas las ventajas que obtienes al utilizar esto en lugar del LIKE.
http://dev.mysql.com/doc/refman/5.0/...xt-search.html
Saludos
Leo.