Wpis z mikrobloga

Znacie jakieś algorytmy full-text search możliwe do zaimplementowania bez dodatkowego back-end'u(dlatego Solr itp. odpadają)?

Pytam o taką "bibliotekę", która tworzy indeks w dowolnej bazie danych(MySQL/NoSQL/Redis) i można napisać ją w każdym języku bez konieczności stawiania dodatkowego serwera gdzieś z tyłu. Obsługa wielu języków, najlepiej coś w rodzaju operatorów(np. AND, OR, cudzysłów), autocomplete(?).

W PHP(xD) istnieje Zend Search Lucene i wydaje mi się że działa na takiej zasadzie, ale to jest jakiś staroć z Zend Frameworka 1.12(?).

#php #programowanie <-- ( ͡° ͜ʖ ͡°)
  • 11
@legolass: fuj, wiem o full-text w MySQL'u, ale ja chcę akurat użyć NoSQL(a dokładniej DynamoDB). Dlatego pytam się o "natywne" rozwiązania w języku programowania, a nie zaimplementowane w oprogramowaniu bazy danych.
@5z7k9: Masz Elasticsearch, Solr, XAPIAN - wszystko to są narzędzia, które musisz zainstalowąć.
Ten zend_search i tak wymaga zainstalowania Lucene.

Algorytmy są znane i możesz je zaimplementować samemu, ale po co i jakim kasztem chcesz to zrobić?
@michalfranc: no tak, jest AWS CloudSearch, ale to kolejna usługa obok Elasticache, DynamoDB, EC2, a je wszystkie jednak trzeba opłacić. CloudSearch ma fajne funkcje, ale $0.059/hr za NAJMNIEJSZĄ instancję + $0.10 za upload 1000 dokumentów(chyba tak to działa)...
Już nawet pomijając te koszty, wszystkie funkcje CloudSearch to przesada w moim wypadku. Jeżeli mam zamiar używać DynamoDB/Redis, to mógłbym z nich korzystać również jako indeks. Na przykład key-value DynamoDB jako persistent i
@michalfranc: używając PCRE(które działają w większości[?] tak samo w różnych językach) + np. metaphone(implementacje dostępne w wielu językach) i soundex(też dostępne) można zrobić token-based index który zadziała w różnych warunkach(key-value, MySQL, itd.), ilość zapytań przy szukaniu zależy od ustawień(w produkcji można zastosować cache dodatkowo), obsłuży większość języków na przyzwoitym poziomie(z metaphone + soundex przy szukaniu "kowalskiego" znajdzie "kowalski"[chodzi o odmiany słów], a i tak można to zrobić lepiej), bez problemu zrobi