Wyszukiwarka uwzględniająca synonimy i odmiany

0

Cześć,

szukam rozwiązania w PHP czy zewnętrznego narzędzia, które umożliwi wyszukiwanie na stronie. Natomiast chce, aby uwzględniana była odmiana i najlepiej jeszcze synonimy.

Więc mamy np. artykuł o tytule "Jazda samochodem" i chciałbym, aby był odnaleziony jak wpiszemy np. jeździć samochodem, auto, samochody itp. Jakie rozwiązanie polecacie do tego? Fajnie, aby było na jakiejś wolnej licencji.

1

I żeby kanapki robiło :)

Widziałeś, żeby poza Google (i ew. paroma innymi produkcjami największych światowych korporacji) coś takiego było zaimplementowane? Ja też nie.

Możesz implementować jakieś sposoby na literówki, np: http://norvig.com/spell-correct.html + do tego obsługa słownika odmian i synonimów, ale nie pytaj mnie jak to zrobić wydajnie i tak, by wyniki faktycznie były zgodne z intencjami. Ale jak ogarniesz to opublikuj na wolnej licencji :)

0

Heh, w sumie masz trochę racji, pytanie mega ogólne. Ale kanapek nie musi robić. ;)

Bazy synonimów istnieją, więc kwestia narzędzia, które to wszystko zepnie. Ktoś korzystał z Solr + Morfologik?

0

Algolia chwali się ze ma taki produkt - https://www.algolia.com/pricing jest nawet darmowa wersja z ograniczeniami.

0
innek napisał(a):

Heh, w sumie masz trochę racji, pytanie mega ogólne. Ale kanapek nie musi robić. ;)

Bazy synonimów istnieją, więc kwestia narzędzia, które to wszystko zepnie. Ktoś korzystał z Solr + Morfologik?

Nie, nie ma racji! Ja korzystam z Solra wraz z kilko bibliotekami. Rewelacyjna sprawa. Bardzo dobrze radzi sobie z polskimi znakami i wiele odmian też jest w stanie obsłużyć. Rewelacyjne sprawdza się nam do autocomplete oraz 'did you mean' dobrze działają również stopwordsy i elegancko radzi sobie z polskimi znakami.
Do obsługo polecam Solarium: http://solarium.readthedocs.io/en/stable

Ma kilka wad.
Wydaje mi się, że odpowiednia konfiguracja nie jest najłatwiejsza. Dodatkowo po każdej nawet najmniejszej zmianie konfiguracji musisz na nowo przeindeksować cały zbiór danych, co przy kilkuset tysięcy a nawet kilku milionach dokumentów może stanowić problem. Kolejny minus to to, że solr jest na javie i jednak wymaga trochę zasobów do działania.


Dobre opinie słyszałem również o Elasticsearch, ale z czym to się dokładnie je to nie podpowiem.

0

Dzięki za odpowiedź. A jesteś w stanie coś więcej powiedzieć lub podzielić się linkami? W szczególności jakie biblioteki polecasz.

0

Generalnie wszystko czego potrzebowałem to http://lucene.apache.org/solr/ + stackoverflow. Z bibliotek używam StopFilterFactory do stopwordsów, MappingCharFilterFactory do mapowania znaków, MorfologikFilterFactory, TrimFilterFactory, LowerCaseFilterFactory i kilka innych standardowych.

Tobie polecam zapoznać się dodatkowo z HunspellStemFilterFactory według mnie jest minimalnie lepsza od morfologik, ale czas indeksowania u mnie był niespełna 3 razy dłuższy. Biorąc pod uwagę to, że nie potrzebowałem jakiejś specjalnie dokładnej analizy języka a dodatkowo dość często musiałem przeindeksowywać całego cora to zrezygnowałem z tej biblioteki.

Ja zaczynałem od solra 4 i zatrzymałem się na 6.0, z tego co widzę od wczoraj jest już 6.2 :)

0

Dzięki, trochę materiałów do przejrzenia, ale chociaż wiem, w którym kierunku iść.

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