Dodaj dokumenty do indeksu dla wyszukiwania bez uwzględniania wielkości liter w Javie

Kiedy potrzebujesz case insensitive search java, które niezawodnie znajduje informacje niezależnie od tego, jak użytkownicy je wpisują, kluczem jest dodanie dokumentów do indeksu przy jednoczesnym normalizowaniu tekstu. W tym samouczku przeprowadzimy konfigurację GroupDocs.Search dla Javy, tak aby każdy dokument, który indeksujesz, był automatycznie zamieniany na małe litery (lub w inny sposób przetwarzany) podczas indeksowania, co zapewnia wyniki bez uwzględniania wielkości liter bez dodatkowej logiki w czasie zapytania.

Szybkie odpowiedzi

  • Co oznacza „add documents to index”? Oznacza to ładowanie plików źródłowych do struktury danych umożliwiającej wyszukiwanie, tak aby można je było później zapytać.
  • Dlaczego używać zamiany znaków? Normalizuje każdy znak — zazwyczaj do małych liter — tak aby wyszukiwania automatycznie ignorowały różnice w wielkości liter.
  • Czy potrzebna jest licencja? Bezpłatna wersja próbna działa w środowisku deweloperskim; pełna licencja jest wymagana w wdrożeniach produkcyjnych.
  • Jaka wersja Javy jest wymagana? Java 8 lub nowsza; biblioteka jest przeznaczona dla Java 11+ w celu uzyskania optymalnej wydajności.
  • Czy mogę przełączyć się na wyszukiwanie uwzględniające wielkość liter w razie potrzeby? Tak — opcje wyszukiwania pozwalają przełączać uwzględnianie wielkości liter dla poszczególnych zapytań.

Co oznacza „add documents to index” w GroupDocs.Search?

Załaduj swoje pliki źródłowe (PDF, DOCX, TXT itp.) do indeksu umożliwiającego wyszukiwanie, aby silnik mógł je szybko odnaleźć. Dodawanie dokumentów do indeksu analizuje każdy plik, wyodrębnia zwykły tekst i przechowuje go w zoptymalizowanej strukturze danych, co umożliwia szybkie wyszukiwanie.

Dlaczego włączyć zamianę znaków podczas indeksowania?

Zamiana znaków konwertuje każdy znak na zdefiniowany wcześniej odpowiednik — najczęściej na małe litery — w trakcie budowania indeksu. Dzięki temu różnice w kapitalizacji, znakach diakrytycznych czy symbolach specyficznych dla lokalizacji nie wpływają na wyniki wyszukiwania. Normalizując tekst w czasie indeksowania, silnik może dopasowywać zapytania do spójnego zestawu tokenów, zapewniając szybkie, niezawodne zachowanie bez uwzględniania wielkości liter bez dodatkowego przetwarzania przy każdym wyszukiwaniu.

Wymagania wstępne

  • GroupDocs.Search for Java wersja 25.4 lub nowsza (biblioteka obsługuje ponad 30 formatów plików i może indeksować dokumenty wielostronicowe bez ładowania całego pliku do pamięci).
  • Java Development Kit (JDK) 8 lub nowszy zainstalowany.
  • Podstawowa znajomość Maven (lub możliwość ręcznego dodania plików JAR).

Konfiguracja GroupDocs.Search dla Javy

Konfiguracja Maven

Dodaj repozytorium GroupDocs oraz zależność do pliku pom.xml:

<repositories>
    <repository>
        <id>repository.groupdocs.com</id>
        <name>GroupDocs Repository</name>
        <url>https://releases.groupdocs.com/search/java/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

Bezpośrednie pobranie

Jeśli wolisz nie używać Maven, pobierz najnowszy plik JAR z oficjalnej strony: GroupDocs.Search for Java releases.

Uzyskanie licencji

  • Free Trial – pobierz licencję próbną, aby rozpocząć eksperymenty.
  • Temporary License – poproś o przedłużoną licencję testową w portalu GroupDocs.
  • Full License – zakup licencję produkcyjną, gdy będziesz gotowy do uruchomienia.

Podstawowa inicjalizacja (Utworzenie indeksu)

Poniższy fragment tworzy folder indeksu i włącza zamianę znaków:

import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);
Index index = new Index(indexFolder, settings);

Przewodnik implementacji

Włączenie zamiany znaków w ustawieniach indeksu

Aktywacja tej funkcji instruuje silnik, aby zamieniał znaki podczas indeksowania, co jest kluczowym krokiem do zachowania bez uwzględniania wielkości liter.

Krok 1: Skonfiguruj IndexSettings

IndexSettings jest obiektem konfiguracyjnym, który kontroluje sposób przechowywania i przetwarzania tekstu w indeksie. Ustawiając useCharacterReplacements na true, włączasz automatyczne zamienianie na małe litery (lub dowolne własne mapowanie).

import com.groupdocs.search.Index;
import com.groupdocs.search.IndexSettings;

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterReplacementDuringIndexing";

// Create an instance of IndexSettings and enable character replacement.
IndexSettings settings = new IndexSettings();
settings.setUseCharacterReplacements(true);

// Initialize the index with these settings.
Index index = new Index(indexFolder, settings);

Konfiguracja zamiany znaków

Mapuj każdy znak na jego odpowiednik w małych literach (lub dowolne własne mapowanie, które jest potrzebne).

Krok 2: Zdefiniuj i dodaj pary zamiany

Słownik zamian przechowuje pary takie jak 'A' → 'a', 'É' → 'e' itd. Dodanie tych par przed indeksowaniem zapewnia, że każdy token jest znormalizowany.

import com.groupdocs.search.dictionaries.CharacterReplacementPair;

// Access existing replacements and clear them.
index.getDictionaries().getCharacterReplacements().clear();

// Create an array for new replacements.
CharacterReplacementPair[] characterReplacements = new CharacterReplacementPair[Character.MAX_VALUE + 1];
for (int i = 0; i < characterReplacements.length; i++) {
    char originalChar = (char) i;
    char replacementChar = Character.toLowerCase(originalChar);
    characterReplacements[i] = new CharacterReplacementPair(originalChar, replacementChar);
}

// Add these replacements to the index's dictionary.
index.getDictionaries().getCharacterReplacements().addRange(characterReplacements);

Indeksowanie dokumentów

Teraz, gdy indeks jest gotowy, możesz add documents to index z dowolnego folderu.

Krok 3: Dodaj dokumenty do indeksowania

GroupDocs.Search skanuje docelowy katalog, wyodrębnia tekst z każdego obsługiwanego typu pliku, stosuje mapę zamian i zapisuje tokeny w magazynie indeksu.

import com.groupdocs.search.Index;

String documentFolder = "YOUR_DOCUMENT_DIRECTORY";

// Initialize the index and add documents.
Index index = new Index(indexFolder, settings);
index.add(documentFolder);

Wykonaj wyszukiwanie uwzględniające wielkość liter (opcjonalnie)

Krok 4: Wykonaj wyszukiwania uwzględniające wielkość liter

SearchOptions konfiguruje zachowanie zapytania, takie jak przełączanie uwzględniania wielkości liter, umożliwiając precyzyjną kontrolę nad sposobem wykonywania wyszukiwań.
SearchOptions.setUseCaseSensitiveSearch(true) wymusza, aby silnik traktował znaki wielkie i małe jako odrębne podczas konkretnego zapytania, nadpisując domyślne zachowanie bez uwzględniania wielkości liter.

import com.groupdocs.search.Index;
import com.groupdocs.search.SearchOptions;
import com.groupdocs.search.results.SearchResult;

String query = "Promotion";
SearchOptions options = new SearchOptions();
options.setUseCaseSensitiveSearch(true);

// Perform the search.
Index index = new Index(indexFolder, settings);
SearchResult result = index.search(query, options);

Praktyczne zastosowania

  1. Kampanie marketingowe – Normalizuj nazwy produktów, aby zespoły sprzedaży mogły znaleźć zasoby bez martwienia się o wielkość liter.
  2. Obsługa klienta – Zasilaj pola wyszukiwania w help desku, które zwracają właściwy artykuł, niezależnie od tego, czy użytkownik wpisze „login”, czy „Login”.
  3. Katalogi e‑commerce – Zapewnij, że klienci znajdą produkty niezależnie od tego, jak wpisują tytuły produktów, co zwiększa współczynnik konwersji.

Względy wydajnościowe

  • Organizuj pliki źródłowe – Przejrzysta hierarchia folderów skraca czas skanowania podczas kroku add documents to index.
  • Monitoruj pamięć – Indeksowanie dużych korpusów może zużywać znaczną ilość RAM; przetwarzanie plików w partiach po 500 – 1 000 elementów utrzymuje zużycie sterty pod kontrolą.
  • Asynchroniczne indeksowanie – Gdy jest wspierane, uruchamiaj indeksowanie w wątku w tle, aby interfejs był responsywny i uniknąć blokowania operacji użytkownika.

Typowe problemy i rozwiązywanie

ObjawPrawdopodobna przyczynaRozwiązanie
Brak wyników dla znanego terminuZamiana znaków nie jest włączonaSprawdź, czy settings.setUseCharacterReplacements(true) oraz czy słownik zamian zawiera potrzebne znaki.
Błąd braku pamięci podczas indeksowaniaIndeksowanie zbyt wielu dużych plików jednocześnieIndeksuj w mniejszych partiach lub zwiększ pamięć sterty JVM (-Xmx4g).
Wyszukiwanie zwraca wyniki uwzględniające wielkość liter nieoczekiwanieSearchOptions.setUseCaseSensitiveSearch(true) został ustawionyUsuń lub ustaw na false, aby przywrócić domyślne zachowanie bez uwzględniania wielkości liter.
Czas ładowania indeksu przekracza oczekiwaniaNiewydajna struktura folderów lub brak użycia SSDZorganizuj ponownie pliki, usuń nieużywane dokumenty i przechowuj indeks na szybkim SSD.
Znaki specjalne są ignorowaneW słowniku zamian brak wpisów UnicodeDodaj mapowania dla znaków takich jak “é”, “ß”, “ø” do ich pożądanych odpowiedników.

Najczęściej zadawane pytania

Q: Jak obsłużyć znaki specjalne (np. „é”, „ß”) podczas indeksowania?
A: Umieść te znaki w słowniku zamian, mapując je na ich odpowiedniki ASCII lub pozostawiając niezmienione w zależności od wymagań wyszukiwania.

Q: Czy mogę ograniczyć zamianę znaków do konkretnego języka?
A: Tak. Zbuduj własną tablicę zamian, która zawiera tylko znaki dla docelowego języka, przed dodaniem jej do słownika.

Q: Co zrobić, gdy indeks ładuje się długo?
A: Optymalizuj strukturę folderów, usuń niepotrzebne pliki i przechowuj indeks na szybkim SSD. Indeksowanie przyrostowe również zmniejsza obciążenie przy ładowaniu.

Q: Czy można odwrócić zamianę znaków po indeksowaniu?
A: Nie. Zamiany są trwale zapisane w danych indeksu; aby je zmienić, trzeba przebudować indeks z nowymi ustawieniami.

Q: Gdzie mogę znaleźć bardziej szczegółową dokumentację API?
A: Oficjalna dokumentacja i odniesienie API zawierają wyczerpujące informacje (zobacz zasoby poniżej).

Zasoby


Ostatnia aktualizacja: 2026-07-31
Testowano z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

Powiązane samouczki