Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL] Wyszukiwanie
styryl
post 15.06.2008, 18:44:20
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


Witam

I mam kolejny problem, mam baze danych i tabele gdzie są pola id,title,lin,opened,date,bad i mam ponad 350 000 tys rekordów. W bazie wyszukuje za pomocą title Like $word co jest masakrą dla serwera (gdy jest duży ruch na stronie) i tutaj moje pytanie jak to zoptyamlizować fulltext odpada bo nie można wyszukiwać 3 literowych fraz, więc jak to zrobić ?

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
Shili
post 15.06.2008, 18:58:32
Post #2





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Zapoznaj się z tematem o wyszukiwaniu: http://forum.php.pl/index.php?showtopic=38307

Jest tam sporo podpowiedzi.

Ten post edytował Shili 15.06.2008, 18:59:29
Go to the top of the page
+Quote Post
marcio
post 15.06.2008, 19:23:33
Post #3





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


@up kurde kazdy tak pisze ale z tego i tak nie wyciaglem wnioskow i tez nie wiem jak poprawic smile.gif dlaczego ktos na php.pl nie napisze o tym art'a??


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
styryl
post 16.06.2008, 08:20:36
Post #4





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


jak to jest z innymi indexsami czy zakłada się je gdy baza jest pusta czy jak jest już pełna. Czy tworzy on index po wyszukaniu? Jak to się ma podczas dodawania nowych rekordów? Jak indeksy są aktualizowane i w którym momencie?
Go to the top of the page
+Quote Post
erix
post 17.06.2008, 19:06:18
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcio
post 17.06.2008, 20:37:57
Post #6





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


ZNam ale malo co rozumiem moze ktos wytlumaczy to tak krotko z jakims przykladem art nie jest dlugi.....


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
phpion
post 17.06.2008, 21:16:37
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Odnośnie pytanie "co to są indeksy" to najlepiej przedstawić to na przykładzie książki. Mamy książkę (tylko kartki z treścią) i chcemy w niej znaleźć coś na temat np. MySQL. Musimy więc przejrzeć wszystkie strony w poszukiwaniu frazy "MySQL". To jest baza bez indeksów. Jednak jeśli na końcu książki znajduje się skorowidz/indeks pojęć to zadanie jest zdecydowanie prostsze. Szukamy "MySQL" w skorowidzu, patrzymy jakie strony zawierają poszukiwane informacje, przechodzimy bezpośrednio do konkretnych stron w książce. Podobną rolę odgrywają indeksy w bazie danych. Bez nich baza jest przeszukiwana sekwencyjnie (wiersz po wierszu).
Go to the top of the page
+Quote Post
marcio
post 17.06.2008, 22:08:20
Post #8





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


To jak zrobic index'y dal wyszukiwarki i w ogole bymbym wdzieczny jak bys to opisal smile.gif


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
erix
post 18.06.2008, 11:47:08
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Załóż przede wszystkim indeks na te kolumny, których używasz do wyszukiwania. ;]

I zrób sobie bencha.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcio
post 18.06.2008, 12:02:07
Post #10





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Mam:http://img159.imageshack.us/my.php?image=zrzutekranu4ke1.png
Robie zapytanie typu:
  1. <?php
  2. mysql_query("select id,match(login_r) against(".$szukaj.") from users where match(login_r) against(".$szukaj.") order by id limit ".$strona*$liczba.",".$liczba."", $db);
  3. ?>

I sa bledy i nic nie szuka moze ktos z was pomoze fajnie by bylo majac czyste sumienie ze wyszukiwarka nie zajedzie bazy smile.gif

P.S oczywiscie takie zapytanie z LIKE dziala
  1. <?php
  2. $query_search = ("select * from ".$tabela." where ".$kolumna." like '%$szukaj%' or ".$kolumna1." like '%$szukaj%' order by id desc limit ".$strona*$liczba.",".$liczba."");
  3. ?>


Ten post edytował marcio 18.06.2008, 12:02:48


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Riklaunim
post 18.06.2008, 12:07:34
Post #11





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Poleciłbym - w przypadku MySQL - postawienie Sphinxa - http://www.sphinxsearch.com/ i wykorzystał go do wyszukiwania. Jest to bardzo wydajne narzędzie i rozwiąże problem szukania w dużej ilości rekordów. Do PHP jest ładne api (tu jakiś tutorial)


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
marcio
post 18.06.2008, 12:10:28
Post #12





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Wiem ze jest ale nie chce gotowcow


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Riklaunim
post 18.06.2008, 12:29:17
Post #13





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(marcio @ 18.06.2008, 13:10:28 ) *
Wiem ze jest ale nie chce gotowcow


LOL ?

To nie skrypt PHP, tylko systemowa aplikacja.


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
marcio
post 18.06.2008, 12:31:20
Post #14





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

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


Nie wiem co to slyszalem o tym chce sobie sam wyszukiwarke napisac ale LIKE przy duej bazie bedzie zabójczy


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Riklaunim
post 18.06.2008, 14:41:26
Post #15





Grupa: Zarejestrowani
Postów: 640
Pomógł: 44
Dołączył: 8.02.2004

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


Cytat(marcio @ 18.06.2008, 13:31:20 ) *
Nie wiem co to slyszalem o tym chce sobie sam wyszukiwarke napisac ale LIKE przy duej bazie bedzie zabójczy


oj, coś biednie z wiedzą - nawet popatrzeć się nie chce. W Sphinxie tworzyć indeksy - definiujesz jakie pola z jakich tabel dla danego indeksu Sphinxa mają być indeksowane. On to sobie odpowiednio indeksuje i co jakiś czas aktualizuje -- i oferuje bardzo szybkie pełnotekstowe wyszukiwanie, a jako wyniki zwraca IDki rekordów, które zostały dopasowane. To nie jest jakaś aplikacja www tongue.gif chcesz napisać wyszukiwarkę - to za pomocą Sphinxa to zrobisz.

Ten post edytował batman 18.06.2008, 17:28:02


--------------------
Biblioteki: Skrypty, CMS | Kurs PHP | Python
Go to the top of the page
+Quote Post
styryl
post 19.06.2008, 15:41:57
Post #16





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


Cytat(styryl @ 16.06.2008, 09:20:36 ) *
jak to jest z innymi indexsami czy zakłada się je gdy baza jest pusta czy jak jest już pełna. Czy tworzy on index po wyszukaniu? Jak to się ma podczas dodawania nowych rekordów? Jak indeksy są aktualizowane i w którym momencie?


Jednak prosiłbym na prcyzyjną odpowiedź czyli
1. Index założyć gdy mam baze pusta ale wiem że już będzie olbrzymia czy dopiero jak już bedą w niej rekordy
2. Jak się aktualizują te indexsy
3. Kiedy mysql tworzy sobie index po wyszukaniu czy jak?

I jest gdzieś po polsku o sphinx

Pozdrawiam
Go to the top of the page
+Quote Post
erix
post 19.06.2008, 18:32:29
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




1: to wtedy serwer obliczy je na nowo. Wiadomo, na pustej bazie nie ma czego liczyć, to będzie szybciej.
2: o ile mnie pamięć nie myli, to wraz z dodawaniem rekordów.
3: jw.

Cytat
I jest gdzieś po polsku o sphinx

Raczej marne szanse na to. Skoro zabierasz się za poważniejsze rzeczy niż "hello world", to chyba zdajesz sobie sprawę, że 95% dokumentacji/aplikacji jest pisane w języku angielskim, nie?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
styryl
post 20.06.2008, 18:58:08
Post #18





Grupa: Zarejestrowani
Postów: 223
Pomógł: 27
Dołączył: 16.04.2008
Skąd: Bakutilu

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


Ano zdaje sobie sprawe biggrin.gif Dzieki prezes za odpowiedź
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: 27.06.2025 - 10:53