Co to jest wyszukiwanie rozmyte?

Wyszukiwanie rozmyte to technika wyszukiwania, która znajduje dopasowania nawet wtedy, gdy zapytanie nie pasuje dokładnie do tekstu. W przeciwieństwie do wyszukiwania dokładnego, gdzie „apple” pasuje tylko do „apple”, wyszukiwanie rozmyte może znaleźć „aple” (z literówką), „Apple” (różna wielkość liter) lub nawet „apples” (liczba mnoga). Działa to poprzez obliczanie podobieństwa dwóch ciągów znaków, uwzględniając literówki, błędy ortograficzne, różne wielkości znaków oraz drobne wariacje. Jest to niezbędne do tworzenia przyjaznych użytkownikowi doświadczeń wyszukiwania, w których użytkownicy nie muszą wpisywać idealnie dokładnych zapytań, aby znaleźć to, czego szukają.

Jak działa Fuse.js?

Fuse.js to biblioteka JavaScript implementująca wyszukiwanie rozmyte przy użyciu algorytmu przybliżonego dopasowywania ciągów znaków. Działa ona w następujący sposób:

  1. Indeksowanie: Tworzenie wydajnej struktury danych z Twoich danych przeszukiwalnych
  2. Ocena: Obliczanie współczynnika podobieństwa pomiędzy zapytaniem a każdym elementem (0.0 = idealne dopasowanie, 1.0 = brak dopasowania)
  3. Filtrowanie: Zwracanie wyników spełniających kryteria progu
  4. Ranking: Sortowanie wyników według trafności na podstawie ich ocen

Biblioteka używa konfigurowalnych opcji, takich jak próg (jak rozmyte ma być wyszukiwanie), lokalizacja (gdzie spodziewane są dopasowania) oraz odległość (jak daleko od oczekiwanej lokalizacji szukać), dając programistom precyzyjną kontrolę nad zachowaniem wyszukiwania.

Opis narzędzia

Fuse.js Playground to interaktywne środowisko testowe dla biblioteki Fuse.js. Umożliwia programistom eksperymentowanie ze wszystkimi dostępnymi opcjami konfiguracji wyszukiwania i podgląd wyników w czasie rzeczywistym na danych własnych lub przykładowych. Możesz konfigurować klucze wyszukiwania z własnymi wagami, dostosowywać podstawowe opcje, takie jak wrażliwość na wielkość liter i wyświetlanie oceny, oraz precyzyjnie regulować zaawansowane parametry, takie jak próg, lokalizacja i odległość. Narzędzie zapewnia natychmiastową wizualną informację zwrotną, pokazując, jak zmiany konfiguracji wpływają na wyniki wyszukiwania, co czyni je idealnym do prototypowania funkcjonalności wyszukiwania przed implementacją.

Funkcje

  • Wprowadzanie własnych danych: Załaduj własny plik JSON, aby przetestować zachowanie wyszukiwania na rzeczywistych zestawach danych
  • Konfigurowalne klucze wyszukiwania: Określ, które pola mają być przeszukiwane, z własnymi priorytetami wagowymi
  • Wyniki w czasie rzeczywistym: Otrzymuj natychmiastową informację zwrotną podczas modyfikacji zapytań lub opcji

Przykłady

Podstawowe wyszukiwanie:

  • Zapytanie: „fantasy” → Znajduje wszystkie książki z kategorii fantasy
  • Zapytanie: „tolkien” → Znajduje książki autorstwa J.R.R. Tolkien
  • Zapytanie: „lord rings” → Znajduje „The Lord of the Rings” mimo brakujących słów

Dopasowanie rozmyte:

  • Zapytanie: „hary poter” (literówki) → Nadal znajduje „Harry Potter”
  • Zapytanie: „1984” → Znajduje książkę George’a Orwella
  • Zapytanie: „scifi” → Dopasowuje kategorię „Science Fiction”

Rozszerzone wyszukiwanie (gdy włączone):

  • Zapytanie: „^The” → Znajduje tytuły zaczynające się od „The”
  • Zapytanie: „!Fantasy” → Dokładne dopasowanie do kategorii „Fantasy”
  • Zapytanie: „'Dune” → Znajduje pozycje zawierające słowo „Dune”

Opcje konfiguracji

Klucze wyszukiwania:

  • Określ, które pola mają być przeszukiwane (np. title, author, category)
  • Przypisz wagi, aby priorytetyzować niektóre pola (wyższa waga = większe znaczenie)

Podstawowe opcje:

  • Case Sensitive: Dopasowuj wielkość liter dokładnie
  • Include Score: Wyświetlaj oceny trafności (0.0 = idealne, 1.0 = słabe)
  • Ignore Diacritics: Traktuj znaki diakrytyczne jako ich podstawowe formy (é = e)
  • Sort Results: Sortuj wyniki według oceny trafności
  • Find All Matches: Kontynuuj wyszukiwanie po znalezieniu pierwszego dopasowania

Zaawansowane opcje:

  • Min Match Char Length: Minimalna liczba znaków wymagana do dopasowania (domyślnie: 1)
  • Location: Oczekiwana pozycja dopasowań w tekście (domyślnie: 0 = początek)
  • Threshold: Jak rozmyte ma być wyszukiwanie, od 0.0 (dokładne) do 1.0 (bardzo rozmyte)
  • Distance: Maksymalna odległość od oczekiwanej lokalizacji, w której szukać
  • Use Extended Search: Włącz zaawansowaną składnię zapytań (^, !, ', itp.)
  • Ignore Location: Nie uwzględniaj pozycji przy dopasowywaniu
  • Ignore Field Norm: Nie uwzględniaj długości pola przy ocenie
  • Field Norm Weight: Jak bardzo długość pola wpływa na ocenę