Przeszukiwanie bazy tekstów

0

Witam wszystkich, mam bazę tekstów (kilkadziesiąt tysięcy, w odległej przyszłości może kilkaset), które chciałbym efektywnie przeszukiwać.

Wstępne założenia:

  • wyszukiwana fraza będzie zwracana w kontekście tzn wraz z jakimś fragmentem tekstu otaczającego, co pociąga za sobą pewne konsekwencje - jeśli np. w całej bazie wystąpi tylko w jednym rekordzie, ale X razy, to będzie X wyników (a przynajmniej X kontekstów w ramach jednego wyniku),
  • sortowanie wyników - najlepiej gdyby teksty z największą ilością wystąpień były najwyżej,
  • traktowanie fraz wielowyrazowych najpierw jako jeden ciąg, a potem przeszukiwanie bazy pod kątem każdej frazy osobno,
  • odmianę na razie odpuszczam.

Zanim zacznę pisać coś od zera, może macie jakieś wskazówki, doświadczenia z gotowymi bibliotekami? Na ten moment teksty zgromadzone są w MariaDB, chociaż liczę się z tym, że konieczne będzie przerzucenie tego do Postgresa...

Z góry dziękuję za wszelkie podpowiedzi. Pozdrawiam.

2
brobo napisał(a):

Na ten moment teksty zgromadzone są w MariaDB, chociaż liczę się z tym, że konieczne będzie przerzucenie tego do Postgresa...

Widzę, ze religijnie przyjąłeś (dyskutowaną tu obok) wyższość PG nad MySQL.
Nie znając projektu, nic ci to nie da.

W szczególności obszerne masy tekstu wymagają
a) bardzo dobrej analizy i projektu (nie umiem sobie w pełni rozczytać twojego opisu, trzeba by się skupic)
i/oraz
b) dodatku innej technologii, typowych wyszukiwarek jak ElasticSearch (one się źle/wcale integrują z najtańszymi hostingami PHP), baz nierelacyjnych

@brobo:

Kolejne soluszyn, to indeksowanie tych tekstów zupełnie poza serwerem wirtualnym np 1x / dobę czy podobne, i wrzucanie indeksu

TO ZALEŻY
Co to za teksty, jaki rytm, tylko przybywa / są zamieniane / są kasowane.

brobo napisał(a):

może macie jakieś wskazówki, doświadczenia z gotowymi bibliotekami?

jednak typowe silniki wyszukiwarkowe

1

Nie będę doradzał na tym etapie konkretnego narzędzia bo mija się to z celem nie mając dokładnych wymagań niefunkcjonalnych. Poczytaj o Full Text Search bo to jest to czego potrzebujesz. Implementować FTS można na dziesiątki sposobów. Są gotowe narzędzia do tego jak wspomniany Elastic Search czy Apache Lucene, ale często FTS jest już wbudowany w silnik bazy danych jak Postgres czy SQL Server.

Poczytaj, potestuj różne narzędzia i wybierz to co najbardziej odpowiada twoim potrzebom.

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