任何全文MySQL专家在那里?MySQL加入和全文搜索
我昨天写了一个问题,询问如何使用全文搜索与大量连接有关的任何建议,有点懒洋洋地,我实际上没有尝试过。
从那以后,我对自己掌握了一个很好的尝试,在我的全文字段中构建了一些成功的测试查询。如果我不使用任何连接,并单独查询每个字段,全文函数将完美工作,相关性/布尔值也可以很好地发挥作用,但是......只要我添加我的连接以运行完整查询,它永远运行。
任何人都可以在我的查询中找到任何可能导致这种情况的事情,因为作为一个业余爱好者,我真的看不到它!
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
这是我的成功,个人查询之一:
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
这是DB模式:
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
这是我的EXPLAIN打印出来:
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
我的网站访问者应该能够搜索: “布拉德皮特安吉丽娜朱莉多切斯特酒店太阳镜@MG” - 这应该从'people.people'表和'photos.caption'表中找到“Brad Pitt”和“Angelina Jolie”。它还应该从'photos.caption'表中找到“Dorchester Hotel”,在'keywords.keyword'表中找到“Sunglasses”,最后在'photoContributor.contributorRef'表中找到“@MG”。
任何帮助将受到欢迎...
加上'EXPLAIN SELECT ...'你的问题 – sanmai
作为参考,如果你正在扩大在一个问题,实际上并没有改变要求的基本信息,那么你应该只是编辑原始,而不是重新开始。 – Orbling
您需要粘贴这些表的模式(SHOW CREATE TABLE'查询的结果应该没问题)。另外,要清楚,似乎你正在使用MyISAM的全文索引? – TehShrike