我現在有一個看起來像這樣的搜索:如何通過mysql中的JOIN搜索來改進我的LIKE?
SELECT s.ID
FROM Shoe s
INNER JOIN Account a
ON s.UserID = a.ID
WHERE s.Publish='1' AND
(s.Brand LIKE '%$Search%'
OR s.Name LIKE '%$Search%'
OR s.PrimaryColor LIKE '%$Search%'
OR a.User LIKE '%$Search%')
ORDER BY s.ID DESC
LIMIT $offset, $rowsPerPage"
能正常工作,當我做了搜索,如「藍」或「耐克」,但如果我做一個搜索,如「藍色耐克」沒什麼回報。我應該使用FULLTEXT
嗎?我該如何改進?我希望能夠搜索與搜索變量相關的所有列。
是的,您應該使用MySQL的全文搜索功能或外部搜索索引。 –
使用LIKE左側的通配符將阻止MySQL使用索引。根據你的需要,你也可以看看solr這樣的東西。 –
@SeanBright我試着用Fulltext與Match Against進行比較,並得到零結果。我進一步搜索這個,並遇到這個 - http://stackoverflow.com/questions/5925369/mysql-join-and-match-against-search-fail似乎不會因爲「停止」的話而工作。如果我迷路了,我不會太在意mysql的前進。 – SReca