Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwarka
sepix
post 25.02.2003, 12:26:24
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)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
itsme
post 25.02.2003, 13:54:28
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ą
Go to the top of the page
+Quote Post
sepix
post 25.02.2003, 14:20:10
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]
Go to the top of the page
+Quote Post
kurtz
post 25.02.2003, 14:25:46
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.

Kod
select * from tabela where pole like '% $szukane_slowo %'

czyli szukane slowo musi byc ponadto "otoczone" spacjami
tylko wtedy odpada: dom, "dom" -dom dom. (czyli dowolne znaki diaktryczne)

trzeba wiec zaprzac wyrazenia regularne i sprawdzac granice slowa (a ze w mysqlu jest zaimplementowany POSIX musisz sie troszke pomeczyc)


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
itsme
post 25.02.2003, 14:31:36
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 smile.gif) ale to juz jest cos
[/quote]


--------------------
brak sygnaturki rowniez jest sygnaturką
Go to the top of the page
+Quote Post
kurtz
post 25.02.2003, 14:42:48
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
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
i zabijesz mysqla 50 like'ami.

eh - po to stworzono wyrazanie regularne zeby z nich korzystac.

hmm glowy nie dam ale czy fulltext tego nie uwglednia?..


--------------------
.. make web your home ..
Go to the top of the page
+Quote Post
sepix
post 25.02.2003, 14:57:47
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?
Go to the top of the page
+Quote Post
itsme
post 25.02.2003, 16:11:52
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ą
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: 14.08.2025 - 07:48