¿Hay expertos en MySQL con texto completo?Uniones de MySQL y búsqueda de texto completo
Ayer escribí una pregunta pidiendo sugerencias sobre cómo usar la búsqueda de texto completo con muchas combinaciones, un poco perezosamente, en realidad no lo había intentado.
Desde entonces, he tenido un buen intento de dominarlo yo mismo, creando algunas consultas de prueba exitosas, contra mis campos de texto completo. Si NO uso ninguna combinación, y consulto cada campo individualmente, las funciones de texto completo funcionan perfectamente y relevancia/boolean funciona muy bien con un gran rendimiento también ... pero ... tan pronto como agregue mis uniones para ejecutar la consulta completa , funciona para siempre.
¿Alguien puede detectar algo en mi consulta que pueda causar que esto suceda, porque como aficionado, realmente no puedo verlo!
SELECT
photos.photoID,
photos.headline,
photos.dateCreated,
MATCH (people.people) AGAINST ('+sarah +harding' IN BOOLEAN MODE) AS Rel1
FROM photos
LEFT JOIN (photoPeople INNER JOIN people ON photoPeople.peopleID = people.PeopleID)
ON photos.photoID = photoPeople.photoID AND MATCH (people.people) AGAINST ('+sarah +harding' IN BOOLEAN MODE)
WHERE
photos.photoStatus = 'Live'
GROUP BY
photos.photoID
ORDER BY Rel1
Ésta es una de mis exitosos, individuales, consultas:
SELECT
photoID,
headline,
dateCreated,
MATCH (caption) AGAINST ('+sarah +harding' IN BOOLEAN MODE) AS Relevance
FROM photos
WHERE
photoStatus = 'Live'
AND
MATCH (caption) AGAINST ('+sarah +harding' IN BOOLEAN MODE)
ORDER BY Relevance
Este es el esquema de base de datos:
photos (tbl)
photoID INT(11) Primary Auto-Increment
headline Long-Text
caption Long-Text/FULLTEXT
dateCreated DateTime
people (tbl)
peopleID INT(11) Primary Auto-Increment
people VarChar(255)/FULLTEXT
photoPeople (tbl)
photoID INT(11)
peopleID INT(11)
keywords (tbl)
keywordID INT(11) Primary Auto-Increment
keyword VarChar(255)/FULLTEXT
photoKeyword (tbl)
photoID INT(11)
keywordID INT(11)
photoContributor (tbl)
photoID INT(11)
contributorRef VarChar(100)/FULLTEXT
Y esta es mi EXPLICAR impresión:
id select_type table type possible_keys key key_len ref rows 1 SIMPLE photos ALL NULL NULL NULL NULL 89830 1 SIMPLE photoContributor ALL NULL NULL NULL NULL 149635 1 SIMPLE photoPeople ALL NULL NULL NULL NULL 110606 1 SIMPLE people eq_ref PRIMARY PRIMARY 4 1 1 SIMPLE photoKeyword ALL NULL NULL NULL NULL 699102 1 SIMPLE keywords eq_ref PRIMARY PRIMARY 4 1
El visitante de mi sitio web debería ser capaz de buscar: "Brad Pitt Angelina Jolie Dorchester Hotel Gafas de sol @MG" - Esto debería encontrar "Brad Pitt" y "Angelina Jolie" de la mesa "people.people" y posiblemente la tabla "photos.caption" también. También debería encontrar "Dorchester Hotel" de la tabla "photos.caption", "Sunglasses" de la tabla "keywords.keyword" y, por último, debería encontrar "@MG" en la tabla "photoContributor.contributorRef".
Cualquier ayuda en esto sería recibida con gratitud ...
agrega '' EXPLAIN SELECT ... a su pregunta – sanmai
Como referencia, si se están expandiendo sobre una cuestión, sin cambiar realmente la información básica pedido, a continuación, sólo debe editar el original, en lugar de empezar de nuevo. – Orbling
Debe pegar el esquema para esas tablas (el resultado de las consultas 'SHOW CREATE TABLE' debería estar bien). Además, para ser claros, parece que está utilizando la indexación de texto completo de MyISAM. – TehShrike