Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyszukiwarka
Forum PHP.pl > Forum > Przedszkole
wNogachSpisz
Witam
Chciałbym stworzyć wyszukiwarkę na mojej stronie.
Wyszukiwanie obbywać się będzie względem artykułów.
Chciałbym aby możliwe było wpisanie słowa i wyszukanie trafień we wszystkich artykułach.
Każdemu słowu odpowiada jeden lub więcej artykułów.
Do głowy przychodzą mi dwa, maksymalnie trzy pomoysły na projekt bazy danych, niestety żaden nie jest idealny.

Pomysł 1.
Każdemu słowu będzie odpowiadała lista z numerami artykułów w których występuje:

słowo (STRING)
artykuł (ID)

Przykład:
'iguana' -> 1,2,4,500,3232,1221,1121212,998762

Problem w tym, że dla najpopularniejszych słów, lista identyfikatorów artykułów będzie bardzo duża,
możliwe że większa niż limit rozmiaru danych możliwych do przesłania między bazą a skryptem...
Na domiar złego popularność słowa będzie oznaczała częste aktualizacje tego ciężkiego wiersza..
Mógłbym ewentualnie zamiast w bazie trzymać tę liste identyfiatorów w zwykłym pliku (na marginesie to jest to chyba jedyne rozwiązanie).

Pomysł 2.
Jeden wiersz, jedna relacja słowo -> artykuł.

Problem w tym że taka baza danych będzie zawierała mniej więcej tyle wierszy ile słów we wszystkich artykułach razem wziętych... Będzie ona monstrualnie wielka, a szybkość jej działania pozostawi wiele do życzenia..

Pomysł 3 polega na rozszerzeniu pomysłu 1 o dodanie do każego słowa roku oraz miesiąca, co w połączeniu ze specyficznym prezentowaniem wyników dało by jakiś tam efekt..

Czy ktoś z Was ma ciekawe pomysły jak rozwiązać ten problem?
Z góry dziękuję za odpowiedzi.

Pozdrowienia
darko
Hej
Polecam zastosowanie Apache Solr jest mega wydajne, o wiele szybsze niż szukanie w bazie i praktycznie nie ma limitu dla wielkości zaindeksowanych danych. Dodatkowo obsługuje load balancing, stemming, faceting i mlt. Polecam! Wdrożyłem to rozwiązanie w dość dużej sieci sklepów, wdrażam w kolejnych i wszyscy są jak dotąd zadowoleni włącznie ze mną z efektów.
konrados
@wNogachSpisz A czemu Twoje rozwiązania miały być lepsze niż zwykłe select z użyciem regular expression?
wNogachSpisz
Cytat(konrados @ 24.10.2011, 17:19:21 ) *
@wNogachSpisz A czemu Twoje rozwiązania miały być lepsze niż zwykłe select z użyciem regular expression?

Chodzi Ci o full-text-search ?
konrados
Cytat
Chodzi Ci o full-text-search ?


No tak, a co, za wolne? Tzn. ja nie wiem - wydawało mi się zawsze, że to będzie szybsze od jakichś autorskich rozwiązań.
wNogachSpisz
Cytat(konrados @ 24.10.2011, 17:43:51 ) *
No tak.

Skoro o to chodzi, to moje rozwiązanie różni się od full-text-search
mniej więcej tak jak Fiat 126p różni się od Bugatti Veyron SS.

Przy.. dajmy na to.. 10 milionach artykułów (nie przesadzam), szukanie full-text będzie trwało jakieś 500 lat, podczas gdy moim sposobem (Pomysł 1) zajmie to jakieś 0,004 sek.

@Darko
spoko, tyle że ja szukam czegoś własnego, mam do dyspozycji php i mysql w standardowych instalacjach, słowem ma to ruszyć na hostingu za 5zł.
sorki że nie napisałem tego na początku.

Cytat(konrados @ 24.10.2011, 17:43:51 ) *
Tzn. ja nie wiem - wydawało mi się zawsze, że to będzie szybsze od jakichś autorskich rozwiązań.

Źle Ci się wydawało.
konrados
@wNogachSpisz
Interesuje mnie ten temat, nie zapomnij tu napisać, choćby i za miesiąc, który scenariusz wybrałeś i jak poszło. Ja tu na pewno zajrzę za miesiąc i jak nic nie napiszesz, wyślę pw z przypomnieniem smile.gif


To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.