Vyhledávání podle atributu java s průvodcem GroupDocs.Search

V moderních aplikacích zaměřených na dokumenty často potřebujete najít soubory nejen podle jejich textového obsahu, ale také podle vlastních metadat, jako je oddělení, úroveň důvěrnosti nebo datum vytvoření. Search by attribute java vám poskytuje tuto schopnost v jedné vysoce výkonné dotazu. V tomto tutoriálu uvidíte, jak hromadně aktualizovat atributy u již indexovaných souborů, vkládat atributy během indexování a efektivně dotazovat dokumenty podle metadat pomocí knihovny GroupDocs.Search pro Java.

Rychlé odpovědi

  • Co je “search by attribute java”? Umožňuje vám filtrovat výsledky vyhledávání pomocí klíč‑hodnota metadat připojených k každému indexovanému dokumentu.
  • Mohu upravovat atributy po indexování? Ano – použijte AttributeChangeBatch k aplikaci hromadných změn bez přestavby celého indexu.
  • Jak přidat atributy během indexování? Zaregistrujte obslužnou rutinu pro událost FileIndexing a nastavte atributy programově pro každý soubor.
  • Potřebuji licenci? Bezplatná zkušební verze funguje pro hodnocení; pro produkční nasazení je vyžadována trvalá licence.
  • Jaká verze Javy je požadována? Doporučuje se Java 8 nebo novější.

Co je “search by attribute java”?

Search by attribute java vám umožňuje dotazovat dokumenty na základě vlastních metadat (atributů) místo pouhého textového obsahu. Tento přístup výrazně zužuje množinu výsledků, snižuje síťový provoz a urychluje odezvu, protože engine vyhodnocuje filtry atributů před provedením full‑textového skenování.

Proč používat dynamické označování metadat?

Dynamické označování metadat vám umožňuje přiřazovat, aktualizovat a spravovat vlastní atributy pro dokumenty bez nutnosti re‑indexování, poskytuje flexibilní klasifikaci, která se přizpůsobuje měnícím se obchodním pravidlům, zlepšuje efektivitu vyhledávání a snižuje potřebu nákladných migrací dat napříč velkými úložišti při zachování souladu a auditovatelnosti.

  • Dynamická kategorizace – udržujte metadata v souladu s vyvíjejícími se obchodními pravidly.
  • Rychlejší filtrování – filtry atributů jsou vyhodnoceny před full‑textovým vyhledáváním, což zvyšuje rychlost odezvy.
  • Sledování souladu – označujte dokumenty pro politiky uchovávání nebo auditní požadavky.
  • Hromadná aktualizace atributů – změňte mnoho dokumentů v jedné operaci bez nutnosti kompletního re‑indexování.

Předpoklady

  • Java 8+ (JDK 8 nebo novější)
  • GroupDocs.Search for Java knihovna (viz nastavení Maven níže)
  • Základní znalost kolekcí v Javě a zpracování výjimek

Nastavení GroupDocs.Search pro Java

Nastavení Maven

Add the GroupDocs repository and dependency to your 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>

Přímé stažení

Alternativně stáhněte nejnovější verzi z GroupDocs.Search for Java releases. Pokud nechcete používat Maven, stáhněte JAR z GroupDocs webu.

Získání licence

  • Začněte s bezplatnou zkušební verzí pro prozkoumání funkcí.
  • Pro delší používání získáte dočasnou nebo plnou licenci prostřednictvím licenční stránky.

Základní inicializace

// 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 upravit atributy dokumentů (hromadná aktualizace)

Pro úpravu atributů dokumentů po jejich indexování můžete použít API AttributeChangeBatch k provedení hromadných aktualizací. Tento přístup aktualizuje metadata vybraných souborů v jedné transakci, čímž se vyhnete režii kompletního re‑indexování kolekce a zachová se full‑textový index.

Přímá odpověď: Použijte AttributeChangeBatch ke skupinování přidání, odstranění nebo nahrazení metadat do jediné atomické operace a poté potvrďte dávku v indexu. Tím se aktualizují atributy mnoha dokumentů najednou při zachování existujícího full‑textového indexu.

Krok 1: přidat dokumenty do indexu

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

Krok 2: získat informace o indexovaných dokumentech

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

Krok 3: hromadná aktualizace atributů dokumentů

Třída AttributeChangeBatch seskupuje více úprav atributů do jediné atomické operace, snižuje I/O režii a zajišťuje konzistenci indexu.

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: vyhledávat s filtry atributů

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

Jak přidat atributy během indexování

Přidání atributů během procesu indexování zajišťuje, že každý dokument je od začátku obohacen o potřebná metadata. Zpracováním události FileIndexing můžete programově připojit páry klíč‑hodnota k objektu DocumentInfo před tím, než engine soubor zpracuje, což zaručuje konzistentní dostupnost atributů pro následná vyhledávání.

Přímá odpověď: Přihlaste se k události FileIndexing před přidáním souborů; v obslužné rutině zavolejte addAttribute na objektu DocumentInfo pro připojení párů klíč‑hodnota a poté nechte index pokračovat ve zpracování souboru.

Krok 1: přihlásit se k události FileIndexing

Událost FileIndexing je spuštěna pro každý soubor při jeho přidání do indexu, což vám umožní vložit vlastní metadata.

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: indexovat dokumenty

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

Praktické aplikace

  1. Systémy správy dokumentů – automaticky označovat soubory při ingestování, což umožňuje okamžitou navigaci podle faset.
  2. Velké archivy obsahu – kombinovat filtry atributů s full‑textovým vyhledáváním pro zkrácení doby dotazu z minut na sekundy u multi‑gigabajtových kolekcí.
  3. Soulad a reportování – dynamicky přiřazovat období uchovávání, úrovně důvěrnosti nebo auditní příznaky, které lze dotazovat pro regulatorní kontroly.

Úvahy o výkonu

  • Správa paměti – monitorujte haldu JVM a laděte -Xmx (např. -Xmx4g pro indexy větší než 2 GB).
  • Dávkové zpracování – seskupujte změny atributů pomocí AttributeChangeBatch pro minimalizaci zápisů na disk; rozdělte dávky větší než 10 000 úprav, aby nedošlo k časovým limitům transakcí.
  • Aktualizace knihovny – používejte nejnovější verzi GroupDocs.Search; verze 25.4 přidává 30 % zrychlení vyhodnocování filtrů atributů ve srovnání s 24.x.

Časté problémy a řešení

ProblémProč k tomu docházíJak opravit
Atributy nebyly použityObslužná rutina nebyla zaregistrována před indexovánímZajistěte, aby index.getEvents().FileIndexing.add(...) běžela před jakýmikoli voláními index.add(...).
Vyhledávání nevrací žádné výsledkyNesoulad názvu atributu (rozlišuje velká a malá písmena)Používejte přesné názvy atributů při vytváření filtrů (createAttribute("main")).
Chyby out‑of‑memory při velkých dávkáchPříliš mnoho změn v jedné dávceRozdělte velké aktualizace na menší instance AttributeChangeBatch (např. 5 000 dokumentů na dávku).
Licence není rozpoznánaPoužíváte trial JAR bez aplikace licenčního souboruZavolejte License license = new License(); license.setLicense("path/to/license.file"); před jakoukoli operací s indexem.

Často kladené otázky

Q: Jaké jsou předpoklady pro použití GroupDocs.Search v Javě?
A: Java 8+, knihovna GroupDocs.Search a základní znalost konceptů indexování.

Q: Jak nainstaluji GroupDocs.Search pomocí Maven?
A: Přidejte úložiště a závislost uvedenou v sekci nastavení Maven do vašeho pom.xml.

Q: Mohu upravovat atributy po indexaci dokumentů?
A: Ano, použijte AttributeChangeBatch pro hromadnou aktualizaci atributů dokumentů bez re‑indexování.

Q: Co když je můj proces indexování pomalý?
A: Optimalizujte paměť JVM (-Xmx), používejte dávkové aktualizace a upgradujte na nejnovější verzi knihovny pro výkonnostní opravy.

Q: Kde najdu více zdrojů o GroupDocs.Search pro Java?
A: Navštivte oficiální dokumentaci nebo prozkoumejte komunitní fóra.

Zdroje


Poslední aktualizace: 2026-09-21
Testováno s: 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");

Související tutoriály