Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Bardziej zaawansowana wyszukiwarka, która wyszuka nie tylko wyrażenia, które wystepują koło siebie.., jak zbudowac taka inteligentną wyszukiwarke.
kukix
post 15.09.2008, 13:03:21
Post #1





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


Witam.
W jaki sposób stworzyć wyszukiwarkę, która ma szersze dziąłanie niz poprostu wybieranie z bazy rekordu, w którym znajduje sie dany ciąg.


Obecnie wyszukiwarka moja wygląda na tej zasadzie:


  1. SELECT * FROM tabela WHERE tytul LIKE '%$zmienna%'


Interesuje mnie jednak coś takiego, że po wpisaniu stolik czarny czy stolik metalowy pojawiałyby się rekordy , które zawierają obydwa te wyrazyu, niekoniecznie będące obok siebie.
Jak zabrać się za coś takiego?


P.S. Coś podobnego jak jest w wyszukiwarce na tym forum, jednak bez konieczności wpiusywania znaków + przeed każdym wyrazem, gdyż było by to zbyt duże utrudnienie dla ludzi.


Prosze o podpowiedź.
Bede wdzieczny za wszelkie wypowiedzi.

Ten post edytował kukix 15.09.2008, 13:04:03
Go to the top of the page
+Quote Post
dr_bonzo
post 15.09.2008, 13:05:08
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


http://www.sphinxsearch.com/
http://devzone.zend.com/node/view/id/91

nie musisz wszystkeigo od zera pisac, mozesz uzyc gotowcow

Ten post edytował dr_bonzo 15.09.2008, 13:05:31


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
kukix
post 15.09.2008, 13:42:21
Post #3





Grupa: Zarejestrowani
Postów: 600
Pomógł: 2
Dołączył: 1.09.2002
Skąd: Wrocław

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


skrypty te są troszke za bardzo rozbudowane.. 750KB w spakowanym archiwum :/

jestem zwolennikiem troszke mniej rozbudowanych skryptów...

moze jest coś bardziej prostego?

Czy nie wystarczy rozbić funkcją explode() zmienną z formularza, rozbijając fraze na poszczegóne wyrazy i następnie zapytanie sql:

  1. SELECT * FROM tabela WHERE tytul LIKE '%$wyraz1%' AND LIKE '%$wyraz2%' AND LIKE '%$wyraz3%'



czynie wystarczy coś takiego?
Może jakieś inne pomysły?

Ten post edytował kukix 15.09.2008, 13:44:31
Go to the top of the page
+Quote Post
akurczyk
post 15.09.2008, 13:48:56
Post #4





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


A ja polecał bym napisac pełnotekstową wyszukiwarkę.
Taka wyszukiwarka mieści się w jednym zapytaniu i ma bardzo duże możliwości IMHO jak google.
Sprubuj tak:
  1. SELECT * FROM tabela WHERE MATCH(tytul,tresc) AGAINST('słowa kluczowe bez %' IN BOOLEAN MODE)

Jeśli ci się to spodoba to:
  1. SELECT * FROM tabela WHERE MATCH(tytul,tresc) AGAINST('słowa kluczowe bez %')

Ta metoda będzie działać troczę szybciej jednak wymaga utworzenia indexu.
Poszukaj w google pod hasłem wyszukiwarka pełnotekstowa mysql lub mysql fulltext search.
PS: Taka wyszukiwarka jest zastosowana na tym forum.


--------------------
Pozdrawiam
Aleksander Kurczyk
Porady dla webmasterów
Go to the top of the page
+Quote Post
dr_bonzo
post 15.09.2008, 14:52:53
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


10 LIKEow w 1 zapytaniu z %% zajedzie ci baze od razu.
I co marudzisz ze szukarki maja po 1MB kodu, nie musisz go pisac, na hostingu na 10^1000% masz tyle miejsca a te szukarki sa szybkie i dzialaja i sa juz napisane.


--------------------
Nie lubię jednorożców.
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:46