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
(cc @kociamber i @mzgw, bo wiem, że mają opinie w tej kwestii)
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
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.
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.
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
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ę
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.
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?
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).
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.