Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [sql] Wyszukiwanie całych wyrazow, zapytanie SQL + regexp
r.drozd
post
Post #1





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

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


Chciałbym moc wyświetlić wpisy z bazy, w ktorych w polu tresc znajduje sie cały wyraz (nie ciąg znakow).
W funkcji preg_match jest możliwość zastosowania w tym celu kotwicy \b .

Probowałem ja rowniez zastosowac w skladni SQL`a:
  1. <?php
  2. $query = mysql_query("SELECT id, tytul, tresc FROM slownik WHERE tresc regexp \"bwyrazb\"") or die(mysql_error());
  3. ?>


ale takie rozwiązanie nie działa (nie sa zwracane żadne wyniki, bez kotwic \b wyniki sa zwracane).

Może jakieś podpowiedzi jak rozwiązać ten problem, lub linki z opisem rozwiązania, bo sam praktycznie nic w Google ani w wewn. wyszukiwarce forum.php.pl nie znalazłem.
Zależy mi aby wykonać to zadanie w zapytaniu SQL.

Dziekuję z gory za ew. podpowiedzi.
Pozdr. R. Drozd
Powód edycji: Dodaje tag /~strife/


--------------------
Apache 2.0.59 | PHP 5.2.3 | MySQL 5.0.41 | PhpMyAdmin 2.10.2
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
tsharek
post
Post #2





Grupa: Zarejestrowani
Postów: 300
Pomógł: 1
Dołączył: 22.09.2003
Skąd: Czeladź

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


nie wiem czy o to chodzi, ale nie możesz poprostu użyć polecenia LIKE (lub ILIKE) w połączeni z "%...%" i spacjami?
np:
  1. SELECT id, tytul, tresc FROM slownik WHERE tresc LIKE "% wyraz %"
Chociaż tutaj może być problem jeżeli dany wyraz znajduje się na końcu lub początku... albo nie...

  1. SELECT id, tytul, tresc FROM slownik WHERE tresc LIKE "% wyraz %" OR tresc LIKE "wyraz %" OR tresc LIKE "% wyraz"


Może rozwiązanie mało elegancke, ale powinno działać:) regexy uważam za bardzo wolne przy dużych bazach


--------------------
Go to the top of the page
+Quote Post
r.drozd
post
Post #3





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

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


Hmm troszkę topornie, ale to jakieś rozwiązanie. Pozostawał by jeszcze problem z interpunkcją stojącą przy wyrazach np. kropki przecinki...

Dalej jednak będę obstawał przy regex, ma ktoś jakieś pomysły??


--------------------
Apache 2.0.59 | PHP 5.2.3 | MySQL 5.0.41 | PhpMyAdmin 2.10.2
Go to the top of the page
+Quote Post
Hazel
post
Post #4





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Po co? Like faktycznie działa szybciej, lepiej i w ogóle...
A interpunkcja da się zrobić też...
W regexpach nie ma na to mniej topornego sposobu.


--------------------
Go to the top of the page
+Quote Post
r.drozd
post
Post #5





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

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


Cytat(Hazel @ 17.08.2007, 17:10:04 ) *
A interpunkcja da się zrobić też...


Masz jakiś pomysł, gotowe rozwiązanie, albo jakąś podpowiedź jak poradzić sobie z interpunkcją przy zastosowaniu "LIKE"??


--------------------
Apache 2.0.59 | PHP 5.2.3 | MySQL 5.0.41 | PhpMyAdmin 2.10.2
Go to the top of the page
+Quote Post
Hazel
post
Post #6





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

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


Dodajesz do poprzedniego kodu:

  1. tresc LIKE "%, wyraz%" OR tresc LIKE "%,wyraz%" OR tresc LIKE "%wyraz,%" OR tresc LIKE "%wyraz ,%"


Chociaż toporność tego sposobu nie zna granic - musisz wszystkie możliwości uwzględniać... ALe z wyrażeniami regularnymi tak samo przecież...


--------------------
Go to the top of the page
+Quote Post
r.drozd
post
Post #7





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

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


Cytat(Hazel @ 17.08.2007, 17:35:47 ) *
Chociaż toporność tego sposobu nie zna granic - musisz wszystkie możliwości uwzględniać...

Jeśli dodać kilka pol do przeszukania to będzie to dopiero topor:).

Cytat(Hazel @ 17.08.2007, 17:35:47 ) *
ALe z wyrażeniami regularnymi tak samo przecież...

No gdyby można było używać kotwicy /b (a z tego co sprawdzałem to nie działa) to kod byłby o wiele mniej toporny.
Chyba pozostanę przy funkcji preg_match wykonywanej na całościowych wynikach.


--------------------
Apache 2.0.59 | PHP 5.2.3 | MySQL 5.0.41 | PhpMyAdmin 2.10.2
Go to the top of the page
+Quote Post
kris2
post
Post #8





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

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


Proponuje poczytac Full-Text Search Functions na stronie MySQL'a
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 Aktualny czas: 19.08.2025 - 07:28