Filtrowanie na żywo
Dla każdego typu gałęzi możliwe jest dodanie pola do filtrowania gałęzi dzieci na żywo. Przykład konfiguracji:
{ "staticChildren": [ { "text": "Umowy", "search": { "enabled": true }, "filteredChildren": { "documentClassId": 1, "textFormatter": "{1}" } } ] }
Wyświetli drzewo
Po Filtruj wyniki zawęża wyświetlane gałęzie filtrowane na podstawie wpisanego tekstu. Po wpisaniu Tekst 1, gałąź Tekst 2 zniknie.
Filtrowanie na żywo działa tak, jak operator ILIKE porównując wpisany tekst do wyświetlanego tekstu w gałęziach dzieci.
Filtrowanie rekursywne
Dal każdego typu gałęzi możliwe jest skonfigurowanie filtrowania rekursywnego. Filtrowanie rekursywne pozwala na przeszukanie wszystkich gałęzi niższych poziomów. Aby uruchomić filtrowanie należy wpisać frazę i kliknąć ENTER. Ze względu na optymalizację, nie działa ono tak samo, jak filtrowanie na żywo. Logika filtrowania rekursywnego:
- w pierwszej fazie na podstawie konfiguracji drzewa zbiera identyfikatory klas dokumentów, w które należy przeszukać
- system wyszukuje dokumenty porównując indeksy do wpisanej frazy (zależne od konfiguracji)
- po wyszukaniu przeszukiwane są w drzewie tylko te gałęzie, w których jest szansa trafienia gałęzi reprezentującej jeden ze znalezionych przez serwer dokument
Podstawowa konfiguracja filtrowania rekursywnego wygląda następująco:
{ "staticChildren": [ { "text": "Umowy", "search": { "enabled": true, "recursive": true, "minQueryCharactersCount": 1, "maxResultNodesCount": 100, "fullTextSearch": true, "minFullTextScore": 0, "databaseSearch": true, "allIndexes": true }, "filteredChildren": { "documentClassId": 1, "textFormatter": "{1}" } } ] }
Parametry:
- recursive (Boolean) - odpowiada za aktywowanie filtrowania rekursywnego. UWAGA: filtrowanie na żywo przestaje działać
- minQueryCharactersCount (Number) - minimalna liczba znaków, jaką musi wpisać użytkownik, aby mógł uruchomić filtrowanie
- maxResultsNodesCount (Number) - liczba "trafień" gałęzi, po której dalsze przeszukiwanie drzewa zostanie przerwane. UWAGA: przeszukiwanie odbywa się na wielu wątkach, więc ta liczba nie odpowiada liczbie gałęzi, jaka zostanie pokazana. Liczba pokazanych gałęzi zawsze będzie większa. Parametr powinien być używany do celów optymalizacyjnych (aby np. nie zapchać bazy zapytaniami)
Wyszukiwanie rekursywne dzieli się na 2 typy:
- wyszukiwanie indeksów w bazie danych
- wyszukiwanie pełnotekstowe za pomocą biblioteki Lucene
Za wyszukiwanie w bazie danych odpowiadają parametry:
- databaseSearch (Boolean) - aktywowanie wyszukiwania w bazie danych
- allIndexes (Boolean) - parametr "mówi" mechanizmowi, aby szukał po wszystkich indeksach przeszukiwanych klas dokumentów. Jeżeli jest wartość false, brane są tylko indeksy użyte w parametrach textFormatter
Za wyszukiwanie pełnotekstowe opowiadają parametry:
- fullTextSearch (Boolean) - aktywowanie wyszukiwania pełnotekstowego. UWAGA: wyszukiwanie pełnotekstowe szuka w zawartości pliku dokumentu oraz jego indeksach. Wymaga włączonego indeksowania na klasie dokumentów
- minFullTextScore (Number) - określenie minimalnego "wyniku" dla wyszukiwania pełnotekstowego (wartość zmiennoprzecinkowa od 0 do 1)
Oba mechanizmy działają niezależnie od siebie. Skonfigurowanie obu wiąże się z tym, że serwer spróbuje szukać dokumentów na podstawie wartości indeksów w bazie oraz za pomocą mechanizmu szukania pełnotekstowego (biblioteka Lucene)
Add Comment