MySQL – Wyszukiwanie “google like”

Dużym atutem googlowskiej wyszukiwarki, jest możliwość używania znaków jak ‘-’ czy ‘+’ oraz ‘”‘ . Pozwalają one na znalezienie wyników, np. z pominięciem jakiegoś słowa.

Gdy każemy google, wyszukać “Dell D4020″, to znajdzie zarówno jego recenzje, czy też sklepy w jakich się on znajduje. Jeśli nie chcemy widzieć np. ofert różnych sklepów, wpisujemy “Dell D4020 -sklep” itd. itd.

Aby zaimplementować wyszukiwarkę o takiej możliwości na naszej stronie, trzeba spełnić kilka zasad.

Pole w tabeli, który będzie przeszukiwane, musi być FULLTEXT’owe.

ALTER TABLE usertable ADD FULLTEXT(userfield);

Natomiast samo polecenie wyszukujące, musi być mniej więcej takie:

SELECT Field, MATCH(Field) AGAINST($SEARCH_PHRASE IN BOOLEAN MODE) AS
Score FROM usertable WHERE MATCH(Field) AGAINST (’$SEARCH_PHRASE IN BOOLEAN
MODE);

Gdzie $SEARCH_PHRASE to oczywiście odpowiednio przefiltrowana fraza wyszukująca, jak np. “dell d420 -sklep”.

Po wykonaniu takiego polecenia otrzymamy wszystkie wpisy pasujące do wzorca, mało tego, otrzymamy je wraz z punktami trafności. Jeśli dodamy do tego odpowiednie ORDER BY, otrzymamy je posortowane wg. uznania.

Żadnych komentarzy.

Zostaw odpowiedź

Musisz się zalogować, aby móc dodać komentarz.