Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wydajność wyszukiwarki w PHP i MySQL
Forum PHP.pl > Forum > Bazy danych
MGL
Witam,

Chciałbym się dowiedzieć o wasze opinie na pewien temat:

Mam 12k plików, po średnio 4k wyrazów, chciałbym zrobić witrynę wyszukującą frazy i słowa w tych plikach. (baza będzie się powiększać ok 2000 plików rocznie, dane nie będą aktualizowane w czasie rzeczywistym - tylko ręcznie, raz dziennie)

Myślałem nad przeniesieniem wszystkich plików (jako tekstu lub html) do bazy MySQL i zrobieniu wyszukiwarki w PHP, tu pojawia się moja wątpliwość co do wydajności tego rozwiązania.

1. Czy zapytania fulltext w MySQL na hostingu będą działać w sposób wystarczająco szybki?
2. Czy powinienem już użyć np. Sphinxa, a w takim wypadku czy i jak Sphinx będzie współpracował z serwerem VPS?
3. Myślałem również nad rozwiązaniem pośrednim tzn. tworzenie indeksu offline (napisaną aplikacją na zwykłym PC) i uploadowanie go do MySQL, co uważać o takim sposobie?

Będę wdzięczny za każdą sugestię.
Crozin
FTS wbudowany w MySQL spokojnie powinien sobie z tym poradzić. Zresztą, zawsze możesz później skorzystać ze Sphinksa, posiada on dobrą integrację z MySQL-em.
ano
Zależy jakie chcesz uzyskać featuresy w swojej wyszukiwarce.
12k plików - są to pdfy/docx? Jeśli tak to technologie oparte na Lucene ułatwią Ci proces ich indeksowania - automatyczna ekstrakcja tekstu z plików.

Jeśli chcesz mieć np wyszukiwanie fasadowe, polską odmianę słów, jakieś ciekawe filtry przy indeksowaniu/odpytywaniu to tego MySQL Ci nie zapewni.

Pamiętaj też, że w miarę sensowny fulltextsearch zaczyna się od mysql 5.6 - wcześniej nie wspierał go silnik InnoDB (jedynie MyIsam). A o wadach myisam radzę osobno poczytać ;-)

Więc:
- na mysql pewnie się uda, ale będziesz zawsze nim ograniczony
- na Solr/Spinhx uzyskasz o wieeele większe możliwości
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.