Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Wyszukiwanie w bazie, FULLTEXT Search
Yozen
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.04.2007

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


Witam,
Mam problem z wyszukiwarką. Na początku była z LIKE jednak szybko przekonałem się o bezużyteczności tej metody, więc zainteresowałem się MATCH i AGAINST.
Wyszukiwarka działa jednak nie tak jak powinna.

Mając np tabele:
Kod
id | tytul
-------------------------
1 | Simpsons - 01
2 | Simpsons - 02
3 | Simpsons - Special 1
4 | Futurama - 01
5 | Futurama - Special
6 | Simpsons - Special 2


Wykonuje zapytanie:
  1. <?php
  2. ...
  3. $zap = "SELECT * FROM napisy WHERE MATCH (tytul) AGAINST ('+$search' IN BOOLEAN MODE) ORDER BY tytul ASC";
  4. ...
  5. ?>


Po przekazaniu zmiennej $search o wartości simpsons special wynikiem wyszukiwania są wszystkie rekordy które zawierają w sobie wyraz simpsons lub special. (w tym wypadku cała tabela bez rokordu o id równym 4)

Jak mam stworzyć zapytanie dzięki któremu zostanią wyświetlone tylko i wyłącznie pozycje które zawierają w sobie wyrazy simpsons i special?


EDIT:
W sumie zastosowałem preg_replace i działa, ale dla całych wyrazów... (spacje na spacje z plusem. Dzieki czemu 2 wyraz otrzymuje +).

Jednak teraz powstał inny problem. Jak zadać zapytanie do bazy, aby z wyszukiwania np: pson Spec wyszukało Simpsons - Special 1 i 2?

Ten post edytował Yozen 12.02.2008, 18:03:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
Kowalikus
post
Post #2





Grupa: Zarejestrowani
Postów: 111
Pomógł: 25
Dołączył: 23.07.2004

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


Gwizdka (*) zastępuje jakikolwiek znak.

dla tego przykładu pson Spec spróbuj '+*pson*+*Spec*'


--------------------
Go to the top of the page
+Quote Post
Yozen
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 7.04.2007

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


Niestety nie działa. Nawet wyszukanie samego pson nic nie wyświetla pomimo *.
Trochę dziwne... Jeżeli szukana fraza nie zaczyna się od pierwszych liter któregoś z wyrazów tytułu to nic nie wyszukuje.
np: *Si* działa a *pson* już nie.
Dodam że mam włączone FULLTEXT dla kolumny tytul.

EDIT:
Problem rozwiązany. Jednak LIKE nie jest taki kiepski jak myślałem biggrin.gif

Ten post edytował Yozen 15.02.2008, 17:14:14
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 - 22:50