Wyszukiwanie po atrybucie java z przewodnikiem GroupDocs.Search

W nowoczesnych aplikacjach skoncentrowanych na dokumentach często trzeba lokalizować pliki nie tylko na podstawie ich treści tekstowej, ale także przy użyciu niestandardowych metadanych, takich jak dział, poziom poufności czy data utworzenia. Search by attribute java daje taką możliwość w jednej, wysokowydajnej kwerendzie. W tym samouczku zobaczysz, jak wsadowo aktualizować atrybuty w już zaindeksowanych plikach, wstrzykiwać atrybuty podczas indeksowania oraz efektywnie wyszukiwać dokumenty po metadanych przy użyciu biblioteki GroupDocs.Search for Java.

Szybkie odpowiedzi

  • Czym jest „search by attribute java”? Umożliwia filtrowanie wyników wyszukiwania przy użyciu metadanych klucz‑wartość dołączonych do każdego zindeksowanego dokumentu.
  • Czy mogę modyfikować atrybuty po indeksowaniu? Tak – użyj AttributeChangeBatch, aby zastosować zmiany masowe bez przebudowy całego indeksu.
  • Jak dodać atrybuty podczas indeksowania? Zarejestruj obsługę zdarzenia FileIndexing i ustawiaj atrybuty programowo dla każdego pliku.
  • Czy potrzebna jest licencja? Darmowa wersja próbna wystarcza do oceny; stała licencja jest wymagana w środowiskach produkcyjnych.
  • Jaka wersja Java jest wymagana? Zalecana jest Java 8 lub nowsza.

Czym jest „search by attribute java”?

Search by attribute java umożliwia zapytania o dokumenty na podstawie niestandardowych metadanych (atrybutów), a nie tylko ich treści tekstowej. Takie podejście drastycznie zmniejsza zestawy wyników, redukuje ruch sieciowy i przyspiesza czasy odpowiedzi, ponieważ silnik ocenia filtry atrybutów przed wykonaniem pełnotekstowego skanowania.

Dlaczego używać dynamicznego tagowania metadanych?

Dynamiczne tagowanie metadanych pozwala przypisywać, aktualizować i zarządzać niestandardowymi atrybutami dokumentów bez ponownego indeksowania, zapewniając elastyczną klasyfikację dostosowującą się do zmieniających się reguł biznesowych, zwiększającą efektywność wyszukiwania i zmniejszającą potrzebę kosztownych migracji danych w dużych repozytoriach przy jednoczesnym zachowaniu zgodności i możliwości audytu.

  • Dynamiczna kategoryzacja – utrzymuj metadane w synchronizacji z ewoluującymi regułami biznesowymi.
  • Szybsze filtrowanie – filtry atrybutów są oceniane przed wyszukiwaniem pełnotekstowym, co przyspiesza czasy odpowiedzi.
  • Śledzenie zgodności – taguj dokumenty zgodnie z politykami retencji lub wymaganiami audytu.
  • Masowa aktualizacja atrybutów – zmień wiele dokumentów w jednej operacji bez ponownego indeksowania wszystkiego.

Prerequisites

  • Java 8+ (JDK 8 lub nowszy)
  • Biblioteka GroupDocs.Search for Java (zobacz konfigurację Maven poniżej)
  • Podstawowa znajomość kolekcji Java i obsługi wyjątków

Konfiguracja GroupDocs.Search dla Java

Konfiguracja Maven

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

<repositories>
    <repository>
        <id>groupdocs-releases</id>
        <url>https://repo.groupdocs.com/maven</url>
    </repository>
</repositories>

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

Bezpośrednie pobranie

Alternatywnie pobierz najnowszą wersję z GroupDocs.Search for Java releases. Jeśli nie chcesz używać Maven, pobierz plik JAR z GroupDocs website.

Uzyskanie licencji

  • Rozpocznij od darmowej wersji próbnej, aby poznać możliwości.
  • W przypadku dłuższego użytkowania, uzyskaj tymczasową lub pełną licencję poprzez stronę licencyjną.

Podstawowa inicjalizacja

// Initialize the search index folder
String indexFolder = "C:/search_index";
Index index = new Index(indexFolder);

// Apply license if you have one
License license = new License();
license.setLicense("C:/licenses/groupdocs.lic");

Jak modyfikować atrybuty dokumentów (aktualizacja wsadowa)

Aby zmodyfikować atrybuty dokumentów po ich zaindeksowaniu, możesz użyć API AttributeChangeBatch, aby zastosować aktualizacje zbiorcze. To podejście aktualizuje metadane wybranych plików w jednej transakcji, unikając kosztów ponownego indeksowania całej kolekcji i zachowując integralność indeksu pełnotekstowego.

Direct answer: Use AttributeChangeBatch to group additions, deletions, or replacements of metadata into a single atomic operation, then commit the batch to the index. This updates the attributes of many documents in one pass while preserving the existing full‑text index.

Krok 1: dodaj dokumenty do indeksu

index.add("C:/docs/contract1.pdf");
index.add("C:/docs/report2.docx");

Krok 2: pobierz informacje o zindeksowanych dokumentach

DocumentInfo info = index.getDocumentInfo("contract1.pdf");
System.out.println("Current attributes: " + info.getAttributes());

Krok 3: masowa aktualizacja atrybutów dokumentów

Klasa AttributeChangeBatch grupuje wiele modyfikacji atrybutów w jedną operację atomową, zmniejszając obciążenie I/O i zapewniając spójność indeksu.

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addAttribute("contract1.pdf", "department", "Legal");
batch.removeAttribute("report2.docx", "confidential");
batch.replaceAttribute("report2.docx", "status", "archived", "active");
index.applyAttributeChanges(batch);

Krok 4: wyszukiwanie z filtrami atrybutów

SearchOptions options = new SearchOptions();
options.addAttributeFilter("department", "Legal");
SearchResult result = index.search("agreement", options);
System.out.println("Found " + result.getCount() + " legal documents.");

Jak dodać atrybuty podczas indeksowania

Dodawanie atrybutów w trakcie procesu indeksowania zapewnia, że każdy dokument jest od razu wzbogacony o niezbędne metadane. Obsługując zdarzenie FileIndexing, możesz programowo dołączać pary klucz‑wartość do każdego obiektu DocumentInfo przed przetworzeniem pliku przez silnik, co gwarantuje spójną dostępność atrybutów w późniejszych wyszukiwaniach.

Direct answer: Subscribe to the FileIndexing event before adding files; in the event handler, call addAttribute on the DocumentInfo object to attach key‑value pairs, then let the index continue processing the file.

Krok 1: subskrybuj zdarzenie FileIndexing

Zdarzenie FileIndexing jest wywoływane dla każdego pliku w momencie jego dodawania do indeksu, co pozwala wstrzyknąć niestandardowe metadane.

index.getEvents().FileIndexing.add(event -> {
    // Example: set department based on folder name
    String folder = new File(event.getFilePath()).getParentFile().getName();
    event.getDocumentInfo().addAttribute("department", folder);
});

Krok 2: indeksuj dokumenty

index.add("C:/incoming/hr/policy.pdf");
index.add("C:/incoming/finance/budget.xlsx");

Praktyczne zastosowania

  1. Systemy zarządzania dokumentami – automatyczne tagowanie plików przy wprowadzaniu, umożliwiające natychmiastową nawigację po fasetach.
  2. Duże archiwa treści – łączenie filtrów atrybutów z wyszukiwaniem pełnotekstowym, aby skrócić czas zapytania z minut do sekund w kolekcjach wielogigabajtowych.
  3. Zgodność i raportowanie – dynamiczne przypisywanie okresów retencji, poziomów poufności lub flag audytowych, które można wyszukiwać w celu kontroli regulacyjnych.

Rozważania dotyczące wydajności

  • Zarządzanie pamięcią – monitoruj stertę JVM i dostosuj -Xmx (np. -Xmx4g dla indeksów większych niż 2 GB).
  • Przetwarzanie wsadowe – grupuj zmiany atrybutów przy użyciu AttributeChangeBatch, aby zminimalizować zapisy na dysku; dziel partie większe niż 10 000 modyfikacji, aby uniknąć timeoutów transakcji.
  • Aktualizacje biblioteki – korzystaj z najnowszej wersji GroupDocs.Search; wersja 25.4 dodaje 30 % przyspieszenia oceny filtrów atrybutów w porównaniu do 24.x.

Typowe problemy i rozwiązania

ProblemDlaczego się pojawiaJak naprawić
Atrybuty nie zastosowanoObsługa zdarzenia nie została zarejestrowana przed indeksowaniemUpewnij się, że index.getEvents().FileIndexing.add(...) jest wywoływane przed jakimikolwiek wywołaniami index.add(...).
Wyszukiwanie nie zwraca wynikówNiezgodność nazwy atrybutu (wrażliwość na wielkość liter)Używaj dokładnych nazw atrybutów przy tworzeniu filtrów (createAttribute("main")).
Błędy braku pamięci przy dużych partiachZbyt wiele zmian w jednej partiiPodziel duże aktualizacje na mniejsze instancje AttributeChangeBatch (np. 5 000 dokumentów na partię).
Licencja nie rozpoznanaUżywanie wersji próbnej JAR bez zastosowania pliku licencjiWywołaj License license = new License(); license.setLicense("path/to/license.file"); przed jakąkolwiek operacją indeksu.

Najczęściej zadawane pytania

Q: Jakie są wymagania wstępne do używania GroupDocs.Search w Javie?
A: Java 8+, biblioteka GroupDocs.Search oraz podstawowa znajomość koncepcji indeksowania.

Q: Jak zainstalować GroupDocs.Search za pomocą Maven?
A: Dodaj repozytorium i zależność pokazane w sekcji konfiguracji Maven do swojego pom.xml.

Q: Czy mogę modyfikować atrybuty po zaindeksowaniu dokumentów?
A: Tak, użyj AttributeChangeBatch, aby wsadowo aktualizować atrybuty dokumentów bez ponownego indeksowania.

Q: Co zrobić, gdy proces indeksowania jest wolny?
A: Optymalizuj pamięć JVM (-Xmx), używaj aktualizacji wsadowych i zaktualizuj bibliotekę do najnowszej wersji, aby skorzystać z poprawek wydajności.

Q: Gdzie mogę znaleźć więcej zasobów dotyczących GroupDocs.Search dla Java?
A: Odwiedź official documentation lub przeglądaj fora społeczności.

Zasoby


Last Updated: 2026-09-21
Testowane z: GroupDocs.Search 25.4 for Java
Autor: GroupDocs

<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>
import com.groupdocs.search.Index;

// Initialize an index in a specified directory
Index index = new Index("YOUR_OUTPUT_DIRECTORY/ChangeAttributes");
index.add("YOUR_DOCUMENT_DIRECTORY");
import com.groupdocs.search.results.DocumentInfo;

DocumentInfo[] documents = index.getIndexedDocuments();
import com.groupdocs.search.common.AttributeChangeBatch;
import com.groupdocs.search.SearchOptions;

AttributeChangeBatch batch = new AttributeChangeBatch();
batch.addToAll("public"); // Add 'public' to all documents
batch.remove(documents[0].getFilePath(), "public"); // Remove 'public' from a specific document
batch.add(documents[0].getFilePath(), "main", "key"); // Add 'main' and 'key' attributes

// Apply changes
index.changeAttributes(batch);
import com.groupdocs.search.results.SearchResult;

SearchOptions options = new SearchOptions();
options.setSearchDocumentFilter(SearchDocumentFilter.createAttribute("main"));
String query = "length";
SearchResult result = index.search(query, options); // Perform the search
import com.groupdocs.search.events.EventHandler;
import com.groupdocs.search.events.FileIndexingEventArgs;

index.getEvents().FileIndexing.add(new EventHandler<FileIndexingEventArgs>() {
    @Override
    public void invoke(Object sender, FileIndexingEventArgs args) {
        if (args.getDocumentFullPath().endsWith("SampleDocument.pdf")) {
            args.setAttributes(new String[] { "main", "key" });
        }
    }
});
index.add("YOUR_DOCUMENT_DIRECTORY");

Powiązane samouczki