Jeśli mieliście okazję czytać nasze poprzednie artykuły (jeśli nie, sprawdźcie linki poniżej tego artykułu), możecie już wiedzieć, że w Macopedii często uczestniczymy w programie TYPO3 Community Budget Ideas. Program ten pozwala deweloperom proponować zmiany i ulepszenia w TYPO3, które następnie są poddawane pod głosowanie członków społeczności. Wybrane pomysły są następnie rozwijane w danym kwartale roku. Z powodzeniem dostarczyliśmy ulepszenia w 2024 roku i ponownie w 2025 roku. Jedna z naszych inicjatyw na trzeci kwartał 2025 roku skupiła się na ulepszeniu indeksowania dokumentacji i funkcjonalności wyszukiwania.
Dobra dokumentacja - istotny element oprogramowania
Jednym z kluczowych elementów decydujących o tym, jak dane oprogramowanie jest odbierane, adaptowane i wykorzystywane przez deweloperów, integratorów i edytorów, jest dostarczenie dokumentacji odpowiedniej jakości. Czasami bywa tak, że pomimo tego, że sama dokumentacja jest bardzo obszerna i wartościowa merytorycznie, to odnalezienie w jej zasobach interesujących nas informacji bywa kłopotliwe. Może to wynikać z wielu przyczyn, ale często bywa tak, że same wyszukiwarki umożliwiające filtrowanie i przeszukiwanie zasobów dokumentacji nie działają do końca poprawnie.
Korzystając często w naszej pracy z dokumentacji TYPO3, zauważyliśmy, że są obszary, które mogą być w niej usprawnione - szczególnie te związane z tym, jak indeksowane są treści i jak generowane oraz prezentowane są wyniki ich wyszukiwania. Nasze pomysły dotyczące potencjalnych usprawnień w dokumentacji TYPO3 zgłosiliśmy w trzecim kwartale tego roku jako jedną z inicjatyw programu Community Budget Ideas. Zostały one pozytywnie odebrane przez społeczność i w wyniku głosowania, zaakceptowane do realizacji.
Plan prac krok po kroku
Zgłaszając naszą inicjatywę dotyczącą wprowadzenia usprawnień w wyszukiwarce dokumentacji TYPO3, przygotowaliśmy dosyć szczegółowy plan realizacji prac, które planowaliśmy wykonać. Dużą część tego planu stanowiły analizy i konsultacje, których celem było wypracowanie i określenie konkretnych zmian, jakie miały być wprowadzone od strony deweloperskiej. Plan ten przedstawiał się następująco:
- Konsultacje z zespołem odpowiedzialnym za dokumentację TYPO3 w celu uzgodnienia, jak wyszukiwarka dokumentacji powinna wyglądać oraz jakie funkcjonalności i możliwości powinna oferować
- Konsultacje z ekspertem od Elasticsearcha w celu omówienia optymalnej struktury indeksu danych
- Przygotowanie we współpracy z ekspertem od Elasticsearcha odpowiedniej struktury indeksu danych, aby pozwalała ona na szybkie i precyzyjne przeszukiwanie dokumentacji w celu zwrócenia wyników jak najbardziej odpowiadających temu, czego użytkownik szukał
- Zmiany w aplikacji indeksującej dane oraz przygotowanie endpointów API, które będą współdziałały z nową strukturą indeksu danych, w celu generowania podpowiedzi dla wyszukiwanych treści oraz zwracania precyzyjnych wyników wyszukiwania
Burza mózgów i mockupy nowej wyszukiwarki dokumentacji
Nasze prace rozpoczęliśmy od zaplanowania spotkania, w którym uczestniczyli Marcin Sągol oraz liderka zespołu odpowiedzialnego za dokumentację TYPO3, Lina Wolf. Podczas spotkania Lina przedstawiła swój punkt widzenia na zmiany dotyczące obsługi wyszukiwania w dokumentacji oraz wizję kierunku, w jakim powinien ewoluować interfejs wyszukiwarki. Zależało jej, aby narzędzie oferowało bardziej zaawansowane możliwości filtrowania i zawężania wyników wyszukiwania, zbliżając się funkcjonalnością do tego, co oferują wyszukiwarki na platformach takich jak GitHub czy Slack.
Aby upewnić się, że zarówno nasz zespół deweloperski, jak i zespół zarządzający dokumentacją TYPO3 w pełni rozumieją kierunek, w którym chcemy podążać, podczas pierwszego spotkania przygotowano również mockupy wyszukiwarki (w Figmie). Przedstawiały one funkcje i zachowanie narzędzia w różnych scenariuszach jego użytkowania.
Podsumowując, nowy system wyszukiwania ma oferować zaawansowany mechanizm sugestii, obejmujący wyniki odsyłające do stron dokumentacji, a także możliwość zawężenia zakresu wyszukiwania do konkretnego podręcznika (np. dokumentacja konkretnego rozszerzenia), dostawcy, opcji lub wersji. Poniżej znajduje się tabela szczegółowo opisująca, czym są "zakresy" wyszukiwania i jaka jest ich rola w kontekście przeszukiwanych danych:
Zakres wyszukiwania | Opis |
globalny | Pozwala na wyszukiwanie we wszystkich podręcznikach (dostawca/pakiet), opcjach i wersjach – wszelkie ograniczenia/zakresy są ignorowane. |
podręcznik | Pozwala na wyszukiwanie wyłącznie w dokumentacji należącej do określonego podręcznika (dostawca/pakiet). Przykłady: georgringer/news, typo3/cms-core (zakres to wskazany pakiet Composer-a). |
dostawca | Pozwala na wyszukiwanie wyłącznie w plikach dokumentacji należących do określonego dostawcy (dostawca). Jeśli istnieje wiele podręczników przypisanych do tego samego dostawcy, wszystkie zostaną przeszukane. Przykład: georgringer, typo3. |
opcja | Ogranicza zakres wyszukiwania wyłącznie do określonej wersji podręcznika. |
dostawca | Pozwala na wyszukiwanie wyłącznie w plikach dokumentacji należących do określonego dostawcy (dostawca). Jeśli istnieje wiele podręczników przypisanych do tego samego dostawcy, wszystkie zostaną przeszukane. Przykład: georgringer, typo3. |
wersja | Ogranicza zakres wyszukiwania wyłącznie do określonej wersji podręcznika. |
Optymalizacja struktury indeksu Elastisearcha
Aby zapewnić, że nowa wyszukiwarka dokumentacji TYPO3 będzie nie tylko szybka, ale także skuteczna w dostarczaniu trafnych wyników z możliwością ich precyzyjnego filtrowania, postanowiliśmy skorzystać z wiedzy eksperta od ElasticSearch.
Skontaktowaliśmy się z Rafałem Kuciem, uznanym specjalistą w tej dziedzinie oraz autorem kilku książek na temat ElasticSearch. Przedstawiliśmy Rafałowi nasze cele i poprosiliśmy o wskazówki dotyczące optymalnego zaprojektowania struktury indeksu danych. Kluczowym celem było takie zorganizowanie danych, aby umożliwić łatwe filtrowanie wyników według typu dokumentacji, rozszerzenia, wersji i innych kryteriów, jednocześnie dbając o maksymalną wydajność. Po kilku dniach otrzymaliśmy od Rafała zestaw rekomendacji, który pozwolił nam przejść do ostatniego etapu - wdrożenia.
Prace deweloperskie - zmiany w indeksie Elasticsearch oraz dostosowanie API
Dokumentacja TYPO3 opiera się na podręcznikach dostarczanych przez członków zespołu TYPO3 lub autorów rozszerzeń, które są generowane jako pliki HTML z plikóww reStructuredText (RST). Ich treść przechodzi proces indeksowania, który obsługiwany jest przez dedykowaną aplikację, napisaną w frameworku Symfony. Podczas indeksowania treść każdego pliku HTML jest rozdzielana na sekcje, co pozwala na bardziej precyzyjne wyniki wyszukiwania i odesłanie użytkowników bezpośrednio do odpowiednich fragmentów dokumentacji, a nie całych stron.
Wprowadzone przez nas zmiany w aplikacji indeksującej oraz strukturze indeksu ElasticSearch, nad którymi pracował głównie Oskar Dydo, umożliwiły stworzenie zaawansowanego mechanizmu sugestii wyszukiwania oraz wsparcie dla zarządzania zakresami wyszukiwania, które zostały opisane wcześniej. Nowe API pozwala na dynamiczne zawężanie wyników wyszukiwania w miarę wpisywania tekstu przez użytkownika, choć obecnie nie obsługuje jeszcze zapytań zawierających wiele fraz.
Całość przygotowanych przez nas zmian została zaimplementowane w repozytorium t3docs-search-indexer. Dodatkowo stworzyliśmy dokument opisujący szczegółowo zmodyfikowaną strukturę indeksu ElasticSearch oraz funkcjonalność nowych endpointów API. Dokument zawiera informacje o parametrach zapytań, strukturze danych zwracanej przez API oraz szczegółowe wyjaśnienia dotyczące mechanizmu sugestii. Zachęcamy do zapoznania się z tym opracowaniem, aby lepiej zrozumieć działanie zaktualizowanego systemu wyszukiwania.
Podsumowanie inicjatywy ulepszenia wyszukiwania w dokumentacji TYPO3
Głównym celem inicjatywy było skoncentrowanie się wyłącznie na backendzie. Zakres prac obejmował rozszerzenie struktury indeksu ElasticSearch, modyfikacje w procesie indeksowania danych oraz dodanie nowych endpointów API do generowania sugestii, które obsłużą scenariusze takie jak zawężanie wyszukiwania czy podpowiedzi w zakresie nazwy pakietu, dostawcy dokumentacji, jej wersji czy różnych opcji.
Mamy nadzieję, że już niebawem przygotowany zostanie także nowy frontend wyszukiwarki, który będzie w pełni korzystał z dostarczonych przez nas funkcjonalności, a to z kolei przełoży się na większy komfort i zadowolenie użytkowników, którzy będą przeglądali zasoby dokumentacji TYPO3 :)
Powiązane linki:
https://macopedia.com/blog/news/typo3-documentation-search-improvements
https://macopedia.com/blog/news/access-control-lists-in-typo3-research-and-planning-improvements