![]() |
![]() |
![]()
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:
zwrócą ten sam wyniik. Którego lepiej używać i dlaczego? |
|
|
![]() |
![]()
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ę' |
|
|
![]()
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
![]() 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'? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]()
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) |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
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 |
|
|
![]()
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
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 18:29 |