Mam aktualnie wyszukiwania, który wygląda tak:Jak mogę poprawić moje LIKE za pomocą wyszukiwania JOIN w mysql?
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"
Działa to dobrze, gdy do wyszukiwania takich jak „Blue” czy „Nikes”, ale jeśli zrobić wyszukiwania, takie jak „Blue Nikes” nic zwraca. Czy powinienem używać FULLTEXT
? Jak mogę to poprawić? Chcę móc przeszukiwać wszystkie kolumny, które mogą odnosić się do zmiennej wyszukiwania.
Tak, należy użyć funkcji wyszukiwania pełnotekstowego MySQL lub zewnętrznego indeksu wyszukiwania. –
Używanie symboli wieloznacznych po lewej stronie LIKE uniemożliwi użycie MySQL w indeksie. W zależności od twoich potrzeb możesz również spojrzeć na coś takiego jak solr. –
@SeanBright Próbowałem użyć Match Against z Fulltext i otrzymałem zero wyników. Dalej szukam tego i natknąłem się na to - http://stackoverflow.com/questions/5925369/mysql-join-and-match-against-search-fail wydaje się, że nie zadziała z powodu słów "stop". Nie jestem zbyt zaawansowany w mysql, więc wybacz mi, jeśli jestem zgubiony. – SReca