![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.01.2003 Skąd: Sochaczew Ostrzeżenie: (0%) ![]() ![]() |
Mam taki problem, otóż jak zgrabnie z poziomu MySql wyszukiwać frazy z pól tekstowych w postaci "fraza" tzn. wyniki gdzie szukane słowo występuje samodzielnie a nie jako część innego słowa, czyli odpada LIKE %fraza%. Odpada użycie przeszukiwania pełnetekstowego. Może RLIKE (REGEXP)?
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
jezeli dobrze zrozumialem ze szukasz np dom w zdaniu Ten dom jest ladny - ale chcesz wykluczyc wyszukane dane typu Ten domek jest ladny.
Kod select * from tabela where pole like '% $szukane_slowo %'
czyli szukane slowo musi byc ponadto "otoczone" spacjami -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.01.2003 Skąd: Sochaczew Ostrzeżenie: (0%) ![]() ![]() |
Ty to masz łeb :-) Nie wpadłem na to. No dobrze ale pozostają jeszcze "warunki brzegowe" :-) czyli sytuacja jak wyraz znajdzie się na samym początku albo końcu i co teraz? Pozdrawiam i dzięki.[/code]
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat jezeli dobrze zrozumialem ze szukasz np dom w zdaniu Ten dom jest ladny - ale chcesz wykluczyc wyszukane dane typu Ten domek jest ladny.
tylko wtedy odpada: dom, "dom" -dom dom. (czyli dowolne znaki diaktryczne)
Kod select * from tabela where pole like '% $szukane_slowo %'
czyli szukane slowo musi byc ponadto "otoczone" spacjami trzeba wiec zaprzac wyrazenia regularne i sprawdzac granice slowa (a ze w mysqlu jest zaimplementowany POSIX musisz sie troszke pomeczyc) -------------------- .. make web your home ..
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
jezeli chodzi o warunki brzegowe dodajesz tylko
Kod or pole like '$szukane_slowo %' or pole like '% szukane_slowo'
co do znakow typu -dom /dom ,dom ;dom ...... nie wiem ![]() [/quote] -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 786 Pomógł: 0 Dołączył: 18.03.2002 Skąd: Wroclaw/Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Cytat jezeli chodzi o warunki brzegowe dodajesz tylko i zabijesz mysqla 50 like'ami.
Kod or pole like '$szukane_slowo %' or pole like '% szukane_slowo'
co do znakow typu -dom /dom ,dom ;dom ...... nie wiem :)) ale to juz jest cos eh - po to stworzono wyrazanie regularne zeby z nich korzystac. hmm glowy nie dam ale czy fulltext tego nie uwglednia?.. -------------------- .. make web your home ..
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 28.01.2003 Skąd: Sochaczew Ostrzeżenie: (0%) ![]() ![]() |
No tak z tymi znakami to już gorzej by było. Ja próbowałem z RLIKE - tam można stosować wyrażenia regularne np.
Kod pole RLIKE '^dom .' Co by było odpowiednikiem warunku brzegowego z początku pola.
Sprawę na pewno rozwiązałoby FULLTEXTSEARCH ale to chyba dopiero jest w Mysql 4.0 - trzeba pozakładać indexy pełnotekstowe na pola i szukać metodą Kod MATCH (pole1,pole2) AGAINST ('fraza')
Pozdrawiam p.s. znak dolara którego użyłeś to jest symbol zmiennej w phpie, a nie element wyrażenia regularnego? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarząd Postów: 1 512 Pomógł: 2 Dołączył: 22.04.2002 Skąd: Koszalin ![]() |
Cytat p.s. znak dolara którego użyłeś to jest symbol zmiennej w phpie, a nie element wyrażenia regularnego?
dokladnie -------------------- brak sygnaturki rowniez jest sygnaturką
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 07:48 |