Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwarka na stronie, Jak ugryźć
uglukha
post 5.07.2012, 10:12:29
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


Witam,
dostało mi się zadanie napisania szukajki na stronie. Strona ma dość nietypową konstrukcję, bo jest w php, ale spora część tekstów stałych jest ciągnięta z xml i zwykłych plików txt,html. Wszystkie teksty do przeszukiwania są poza mysql, właśnie w tych plikach.

Wszystko jest dość logicznie ułożone, pogrupowane w katalogach, ładnie nazwane itp.

Taka baza danych z plików (sic!) wink.gif Jest ich około 300 po parę kb.

I moje pytanie, czy ma sens napisanie wyszukiwarki takiej:
- formularz - wpisanie szukanej frazy
- php ładuje do tablicy odpowiednią zawartość plików
- przeszukuję tablicę na szukaną frazę
- wyświetlam wyniki na podstawie wyszukania w tablicy

Czy coś takiego będzie wydajne? Ile tych plików może być, zanim się zamuli serwer. Leży to wszystko na jakimś zwyczajnym hostingu z tego co się orientuję, jakaś nazwa.pl czy coś w tym stylu.

Z góry dzięki za odp.


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
matty7
post 5.07.2012, 10:27:56
Post #2





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 23.12.2006
Skąd: Będzin / Kraków

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


Cytat
- php ładuje do tablicy odpowiednią zawartość plików

No wydajne to to może nie być. Szczególnie jeśli na stronie będziesz mieć 100 osób, które w jednej chwili wyszukają jakąś frazę.

Ile? Przetestuj... biggrin.gif

A najoptymalniej byłoby napisać program/skrypt CGI i stamtąd pobierać wyniki... wink.gif

Ten post edytował matty7 5.07.2012, 10:28:23
Go to the top of the page
+Quote Post
uglukha
post 8.07.2012, 21:17:08
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


Niestety nie znam sie cgi

Tylko php.

Jakaś inna podpowiedź w takim razie jak to zrobić?

Strona nie jest jakaś super popularna, może z 1k-2k odwiedzin dziennie.


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
konrados
post 8.07.2012, 21:28:12
Post #4





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


A nie możesz napisać prostego skryptu, który skopiuje te pliki do bazy? Struktura b. prosta:
id, file_path, contents
'contents' typu 'text'.
Go to the top of the page
+Quote Post
Korab
post 8.07.2012, 21:48:53
Post #5





Grupa: Zarejestrowani
Postów: 202
Pomógł: 36
Dołączył: 10.06.2011
Skąd: Dokąd

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


Ale po co duplikować treść?
Możesz sobie zrobić plik indeksu ze słowami-kluczami (np. w XML) o takiej np. strukturze:
  1. <pozycja>
  2. <slowo>lakmus</slowo>
  3. <pliki>
  4. <plik ilosc_wystapien="9">lakmus.txt</plik>
  5. <plik ilosc_wystapien="7">wenus_z_milo.txt</plik>
  6. </pliki>
  7. </pozycja>

I przy dodawaniu kolejnych plików zczytać zawartość i zaktualizować indeks.
PHP ma niezłe narzędzia do obsługi XML, a przeszukiwanie po kolei plików w folderach też nie jest specjalnym wyzwaniem dla tego wspaniałego heart.gif języka!

Ten post edytował Korab 8.07.2012, 21:51:05
Go to the top of the page
+Quote Post
uglukha
post 16.07.2012, 16:44:43
Post #6





Grupa: Zarejestrowani
Postów: 110
Pomógł: 0
Dołączył: 5.05.2008

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


Dzięki wszystki za odpowiedzi, w sumie problem rozwiązany.

Okazało się że ma to tylko przeszukiwać same tytuły artykułów, więc max 300 tytułów jeśli się weźmie szukanie po całości, a zazwyczaj szukanie w około 30 w jednej kategorii (domyślne).

Uznałem, że to nie zamuli serwera, użyłem wrzucania do tablicy i pętla foreach, i wyszukiwanie przez :

  1. $pos = stripos($nazwa, $szukaj);


Ponoć mniej zasobożerne niż preg_match.

Jak będą zadyszki na serwie to zrobię jakąś mini bazę z zapytaniami, tak jak piszecie smile.gif

Dzięki!

P.S. Czy jak w jednym skrypcie tekstowym zrobię pętlę 1000 wyszukiwań to będzie to tak samo obciążające, jak 1000 użytkowników robiących 1 wyszukanie w tym samym czasie?
Chciałbym jakoś przetestować wydajność i zamulenie serwera moim skryptem biggrin.gif


--------------------
Death and Decay >.<
Go to the top of the page
+Quote Post
konrados
post 16.07.2012, 17:03:21
Post #7





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


No nie, bo każda wizyta usera to osobny request (trzeba za każdym razem pobrać całą stronę). Tak więc pętla z 1000 wyszukań będzie oczywiście dużo szybsza.
Ale czemu pytasz?

Ten post edytował konrados 16.07.2012, 17:03:53
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: 19.07.2025 - 11:13