Dynamiczna wyszukiwarka tekstowa

0

Witam, chciałbym poradzić się Was odnośnie wyszukiwarki takiej jak ma Facebook (ta na górze strony). Wyszukiwanie miałoby być "różnych typów obiektów" np. użytkownicy, grupy, fanpejdże, wydarzenia - wyszukiwanie tylko po jednym polu - tytuł. Wszystkie te obiekty są w osobnych tabelach (moja główna baza to MySQL). Chciałbym to zrobić możliwie optymalnie, ale nie wiem, którą drogę wybrać.
Wydaje mi się, że można to zrobić takimi sposobami:

  1. Cron-em co jakiś czas przenosić te wszystkie dane (uzytkownicy, grupy, fanpejdze, wydarzenia) do Elastic Search do jednej "tabeli" i przy wyszukiwaniu używać właśnie tylko danych z ES?
  2. Odpalić jakiś serwer z kolejkowaniem (np. Redis), przyjmować tam na bieżąco nowe dane i cron-em lub node.js odbierać i pakować do Elastic Search?
  3. Czy może przy tworzeniu tych obiektów przez użytkownika na portalu, od razu zapisywać dane do dwóch baz danych: główna - MySQL i dodatkowa dla potrzeb wyszukiwania: Elastic Search albo Mongo?

Może są jakieś całkowicie inne metody do tego? Będę wdzięczny za wskazówki.

1

A jesteś pewien, że potrzebujesz ES? Ile będziesz miał rekordów? 1k? 1M? MySQL wspiera FTS OOtB więc możesz to zwyczajnie zrobić wewnątrz DB poprzez zwykły widok. Dla prostych wyszukiwań powinno być zdecydowanie prostsze.

0

Używam już ES w jednym miejscu do wyszukiwania ogłoszeń więc nie będzie problemu z dołożeniem bo ES i tak jest. Nie chcę i tak tego robić wyszukiwania na głównej bazie bo będzie ona cały czas i tak wystarczająco zajęta obsługiwaniem innych zadań. Chyba, że postawić serwer z drugą bazą (slave, tryb read-only), żeby replikować do niej te tabele używane do wyszukiwania i w tej osobnej bazie wyszukiwać?
Co do ilości rekordów, zakładając że będę miał te 4 różne typy obiektów czyli użytkownicy, grupy, fajnpejdże, wydarzenia, to zakładam do pewnego momentu 100 tyś. rekordów łącznie. Jeśli da się tak fajnie ogarnąć to wyszukiwanie w MySQL (czyli ignorowanie literówek, polskich znaków) to pasowałoby mi takie rozwiązanie na początek :)

0

Proponuje Apache SOLR coś jak FTS na sterydach.

0

@bfraszczyk: w takiej mini wyszukiwarce akurat sterydów nie potrzebuje, więc chyba obejdzie się, a i tak pozostaje kwestia jak te dane mógłbym dostarczać do SOLR-a z głównej bazy :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1