Sealpage - wyszukiwanie

Zastanawiam się, jak rozegrać w Sealpage sprawę wyszukiwania. Musimy zaplanować, jak ogarniemy zarówno kwestię indeksowania danych jak i prezentacji wyników.

Jednym z prostszych rozwiązań byłoby użycie DuckDuckGo. Wpisanie czegoś w wyszukiwarkę kierowałoby na DDG z wpisanym wyszukiwaniem i dodanym site:strona.com:

(Google Custom Search z wiadomych przyczyn nie wchodzi w grę)

Wiem też, że możemy wdrożyć Apache Solr. Wiem, że dobrze indeksuje treści i korzysta z różnych źródeł danych (co pasuje do idei Sealpage’a), ale nie wiem, z jakimi wyzwaniami się on wiąże.

Będę wdzięczny za Wasze komentarze i przemyślenia :slight_smile:

(cc @kociamber i @mzgw, bo wiem, że mają opinie w tej kwestii)

Korzysta z Javy :<

Docker Hub :wink:

A w ten sposób zwiększymy znacząco złożoność projektu, rozpatrywałbym takiego Solra jako opcjonalne wyszukiwanie. W przypadku duckduckgo, to prosty request przez Fetch API.

Tak, myślę że to może być opcjonalny plugin np. dla dużych stron i jak ktoś chce mieć scustomizowaną stronę wyszukiwania. A domyślnie byłoby np. takie DDG

Podejrzewam, że fetchowanie ich wyników AJAXem byłoby wbrew ich polityce, myślałem raczej o zwykłym przekierowaniu np. na sealious site:hub.sealcode.org at DuckDuckGo

Imo przekierowanie na duckduckgo z ux-owego punktu jest słabe. Jednak jako użytkownik wolałbym się poruszać w obrębie strony na której jestem, ale to może tylko ja.

2 Likes

Zgadzam się z @arkadiusz.wieczorek, że Solr znacząco zwiększa złożoność projektu (i to niezależnie od tego, czy masz go jako obraz dockerowy czy cokolwiek innego). Dodatkowo:

może to kwestia konkretnego frameworka na backendzie i komunikacji Solra z tymże (w moim przypadku był to Sitecore), ale wszelkie opcje customizacyjne jeśli chodzi o zwracanie rezultatów musiały być i tak obsłużone przez frameworka już po zwróceniu pierwszego “dumpa” rezultatów przez Solra. Musiałabym dopytać kolegę, który się w tym specjalizuje.

Sprawdziłeś to w ich regulaminie i jest na to paragraf? To już kwestia preferencji, ale np. mnie irytuje, gdy strona oferuje wyszukiwarkę, a potem przekierowuje mnie na stronę Googla (albo jakiejkolwiek innej przeglądarki) – straszliwie to zaburza flow strony.

1 Like

AFAIK oni nie mają Search API (prawdopodobnie dlatego, że sami korzystają z Yandexa). A scrapowanie raczej z przyczyn technicznych nie wchodzi w grę (bo DDG coś zmieni na stronie i kicha)

Zawsze można wyniki osadzić w iframe wewnątrz strony XD

1 Like

Iframe wewnątrz strony pochodzący z innego źródła to zawsze jakieś potencjalne źródło zagrożenia bezpieczeństwa. Wtedy musisz się już dobrze zagłębić w CORSa i inne takie tematy. Już nie wspominając o tym, że iframe’y wyglądają zwykle kiepsko, oraz że znowu komplikujesz sobie życie – po wybraniu czegoś z iframe’a musisz wtedy zmusić przeglądarkę, żeby pokazała kliknięty wynik wyszukiwania nie w iframie, a w całym oknie (co znowu stanowiłoby hijackowanie i potencjalny problem bezpieczeństwa…), w innym przypadku mógłbyś mieć search’ową incepcję :slight_smile:

1 Like

Solr to potężne narzędzie, daje więcej możliwości niż DDG, IMO czyni go to overkillem w przypadku mniejszych projektów.

2 Likes

Hmm to może https://www.elastic.co/

Elastic jest spoko, ale imho – dobry jak masz sporo rzeczy do przeszukiwania, a w innym przypadku to overkill :slight_smile:

Tak to jest duży kaliber, dodatkowo w sealpage chcielibyśmy mieć różne sterowniki baz danych - więc rozwiązanie nie będzie jednolite. U mnie w jednym projekcie baza mongo zajeżdża się przy przeszukiwaniu >200k rekordów.

2 Likes

Mysle, ze jestesmy przede wszystkim w potrzebie czegos, co jest w stanie dac nam wyszukiwanie w j. polskim o wysokiej jakosci. Tego np. nie ma Phabricator i zdarza sie ze musze szukac po roznych odmianach danego slowa az znajde to, czego szukam.

Dlatego jezeli znajdziemy cos, co pozwala na indeksowanie tresci ktore bierze pod uwage deklinacje i inne odmiany to warto bedzie z tego skorzystac, niezaleznie od “kalibru”. Czy Elastic lub Solr to potrafia?

Co do roznych zrodel danych - zastanawiam sie coraz bardziej, czy jest sens korzystac z czegos innego niz mongo w Sealpage’u? :thinking:

A post was split to a new topic: Sealpage - żródła danych

Cc @mzgw @kociamber :slight_smile:

A jakie byłyby konkretne oczekiwania? Że jeśli ktoś wyszuka “szuka”, a gdzieś w dokumencie będzie “szukam”, “szukać”, itd to też go zwróci? Czy też że jeśli ktoś wyszuka “szukam”, a w dokumencie będzie “szukasz”, to też go zwróci? Na oko widzę, że ten drugi scenariusz nie działa w Solrze (ale może to kwestia konfiguracji – wyszukiwanie po polsku nie było priorytetem jeśli chodzi o projekt, w którym go widziałam).

Chodzi o szukam/szukasz. Myślę, że to jest podstawowe wymaganie odnośnie silnika wyszukiwania

Trzeba by sprawdzić, na czym opiera się fuzzy search w Solrze. Jeśli implementacja opiera sie po prostu o wybranie jakiejś maksymalnej wartości dystansu Levenshteina, to powinno to być wykonalne.

Edit: wg dokumentacji stosuje się odpowiednią flagę uderzając z query do Solr, więc trzeba by to odpowiednio zaimplementować już po stronie Sealpage’a.

Levenshtein? Liczyłem, że to robi jakąś tokenizację :x