Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Szukanie tekstu z użyciem '=' oraz 'LIKE'
szafik
post 20.07.2010, 11:57:19
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.07.2010

Ostrzeżenie: (0%)
-----


Witam.

Jaka jest różnica między '=' oraz LIKE?

Te dwa zapytania:
  1. SELECT * FROM `meble` WHERE `name` = 'szafa'


  1. SELECT * FROM `meble` WHERE `name` LIKE 'szafa'

zwrócą ten sam wyniik.

Którego lepiej używać i dlaczego?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Mchl
post 20.07.2010, 12:02:55
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


W takim przypadku lepsze jest =

LIKE daje Ci możliwość wyszukowania wartości będących częścią łańcucha

puść sobie dla przykładu:

Kod
SELECT * FROM `meble` WHERE `name` LIKE 'sz%'

Kod
SELECT * FROM `meble` WHERE `name` LIKE '%fa'

Kod
SELECT * FROM `meble` WHERE `name` LIKE '%af%'


% zastępuje dowolną ilość dowolnych znaków (w tym 0) coś jak * w OS
_ zastępuje dokładnie jeden znak

Kod
SELECT * FROM `meble` WHERE `name` LIKE 'szaf_'


dopasuje na przykład 'szafa','szafy','szafę'
Go to the top of the page
+Quote Post
szafik
post 20.07.2010, 23:32:37
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 10.07.2010

Ostrzeżenie: (0%)
-----


Ok, dziękuję za rozjaśnienie sprawy, widać, że ma Pan widzę na ten temat smile.gif

Mam jeszcze pytanie związane z tym w pierwszym poście.

Na czym polega wyszukiwanie tzw. "pełno tekstowe", czym to się różni od zwykłego wyszukiwania z użyciem '=' lub 'LIKE'?
Go to the top of the page
+Quote Post
cojack
post 20.07.2010, 23:45:10
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Wyszukiwanie pełnotekstowe opiera się o słownik, czyli jeżeli wpiszesz wyrażenie: "samochód" to leksykalnie słownik będzie wyszukiwał takich wyrażeń jak "samochody" czy też inne, wyszukiwanie pełnotekstowe w MySQL jest dostępne tylko na tabelach z silnikiem MyISAM.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Mchl
post 21.07.2010, 08:07:07
Post #5





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


W uproszczeniu:

KIedy dodajesz wiersz do tabeli w któej istnieje indeks typu FULL-TEXT, MySQL łączy ze sobą wszystkie pola objęte tym indeksem, a następnie rozbija na pojedyńcze słowa (parsowanie) i dodaje je do indeksu. Struktura tego indeksu jest dwupoziomowa i wygląda mniej więcej tak.

Poziom 1. słowo, ilość wystąpień
Poziom 2. waga, id wiersza w którym słowo występuje

Kiedy korzystasz z wyszukiwania pełnotekstowego, baza danych wyszukuje poszukiwane słowa w indeksie i na tej podstawie zwraca wiersze, posortowane dodatkowo wedle trafności (która z kolei wyliczana jest na podstawie ilości wystąpień i wagi).

Standardowy parser z tego co wiem nie uwzględnia polskiej fleksji, więc 'samochód' i 'samochody' to dla niego dwa różne słowa, MySQL posiada jednak API pozwalające na podpięcie własnych parserów (np dla języka polskiego, ale też pozwalające na parsowanie np dokumentów XML z pominięciem tagów)
Go to the top of the page
+Quote Post
cojack
post 21.07.2010, 08:28:02
Post #6





Grupa: Zarejestrowani
Postów: 898
Pomógł: 80
Dołączył: 31.05.2008

Ostrzeżenie: (20%)
X----


Nie wiem jak w mysql, ale w postgresie dorzucasz ispella i gra muzyka.


--------------------
cojack blog - mój blog (na jakiś czas off).
"jak czegoś nie wiem, to nie myślę że wiem" - moja domena
Go to the top of the page
+Quote Post
Mchl
post 21.07.2010, 09:05:50
Post #7





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

Ostrzeżenie: (0%)
-----


Dla MySQL np mnoGoSearch + słownik w formacie ispell
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 18:29