Sök efter attribut java med GroupDocs.Search guide

I moderna dokument‑centrerade applikationer behöver du ofta hitta filer inte bara efter deras textinnehåll utan också efter anpassad metadata såsom avdelning, konfidentialitetsnivå eller skapelsedatum. Search by attribute java ger dig den möjligheten i en enda högpresterande fråga. I den här handledningen kommer du att se hur du batch‑uppdaterar attribut på redan indexerade filer, injicerar attribut under indexering och effektivt frågar dokument efter metadata med hjälp av GroupDocs.Search for Java‑biblioteket.

Snabba svar

  • Vad är “search by attribute java”? Det låter dig filtrera sökresultat med nyckel‑värde‑metadata som är bifogade varje indexerat dokument.
  • Kan jag modifiera attribut efter indexering? Ja – använd AttributeChangeBatch för att tillämpa massändringar utan att bygga om hela indexet.
  • Hur lägger jag till attribut under indexering? Registrera en hanterare för FileIndexing‑händelsen och sätt attribut programatiskt för varje fil.
  • Behöver jag en licens? En gratis provperiod fungerar för utvärdering; en permanent licens krävs för produktionsdistributioner.
  • Vilken Java‑version krävs? Java 8 eller senare rekommenderas.

Vad är “search by attribute java”?

Search by attribute java gör det möjligt att fråga dokument baserat på anpassad metadata (attribut) snarare än bara deras textinnehåll. Detta tillvägagångssätt minskar dramatiskt resultatuppsättningar, minskar nätverkstrafik och snabbar upp svarstider eftersom motorn utvärderar attributfilter innan full‑text‑skanning utförs.

Varför använda dynamisk metadata‑taggning?

Dynamisk metadata‑taggning låter dig tilldela, uppdatera och hantera anpassade attribut för dokument utan omindexering, vilket ger flexibel klassificering som anpassar sig till förändrade affärsregler, förbättrar sökeffektiviteten och minskar behovet av kostsamma datamigreringar över stora arkiv samtidigt som efterlevnad och spårbarhet upprätthålls.

  • Dynamic categorization – håll metadata i synk med utvecklande affärsregler.
  • Faster filtering – attributfilter utvärderas innan full‑text‑sökning, vilket ökar svarstiderna.
  • Compliance tracking – tagga dokument för lagringspolicyer eller revisionskrav.
  • Batch update attributes – ändra många dokument i en operation utan att omindexera allt.

Förutsättningar

  • Java 8+ (JDK 8 eller nyare)
  • GroupDocs.Search for Java‑biblioteket (se Maven‑inställning nedan)
  • Grundläggande kunskap om Java‑samlingar och undantagshantering

Konfigurera GroupDocs.Search för Java

Maven‑inställning

Lägg till GroupDocs‑arkivet och beroendet i din 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>

Direktnedladdning

Alternativt, ladda ner den senaste versionen från GroupDocs.Search for Java releases. Om du föredrar att inte använda Maven, hämta JAR‑filen från GroupDocs website.

Licensanskaffning

  • Börja med en gratis provperiod för att utforska funktionerna.
  • För utökad användning, skaffa en tillfällig eller fullständig licens via license page.

Grundläggande initiering

// 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");

Hur man modifierar dokumentattribut (batch‑uppdatering)

För att modifiera dokumentattribut efter att de har indexerats kan du använda AttributeChangeBatch‑API:t för att tillämpa massuppdateringar. Detta tillvägagångssätt uppdaterar metadata för valda filer i en enda transaktion, vilket undviker overheaden av att omindexera hela samlingen och behåller full‑text‑indexet intakt.

Direkt svar: Använd AttributeChangeBatch för att gruppera tillägg, borttagningar eller ersättningar av metadata till en enda atomär operation, och begå sedan batchen till indexet. Detta uppdaterar attributen för många dokument i ett pass samtidigt som det befintliga full‑text‑indexet bevaras.

Steg 1: lägg till dokument i indexet

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

Steg 2: hämta information om indexerade dokument

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

Steg 3: batch‑uppdatera dokumentattribut

AttributeChangeBatch‑klassen grupperar flera attributmodifieringar till en enda atomär operation, vilket minskar I/O‑overhead och säkerställer indexkonsistens.

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);

Steg 4: sök med attributfilter

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

Hur man lägger till attribut under indexering

Att lägga till attribut under indexeringsprocessen säkerställer att varje dokument berikas med nödvändig metadata från början. Genom att hantera FileIndexing‑händelsen kan du programatiskt bifoga nyckel‑värde‑par till varje DocumentInfo‑objekt innan motorn bearbetar filen, vilket garanterar konsekvent attributtillgänglighet för efterföljande sökningar.

Direkt svar: Prenumerera på FileIndexing‑händelsen innan du lägger till filer; i händelsehanteraren, anropa addAttribute på DocumentInfo‑objektet för att bifoga nyckel‑värde‑par, och låt sedan indexet fortsätta bearbeta filen.

Steg 1: prenumerera på FileIndexing‑händelsen

FileIndexing‑händelsen utlöses för varje fil när den läggs till i indexet, vilket låter dig injicera anpassad 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);
});

Steg 2: indexera dokument

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

Praktiska tillämpningar

  1. Document management systems – tagga automatiskt filer vid intag, vilket möjliggör omedelbar facet‑navigering.
  2. Large content archives – kombinera attributfilter med full‑text‑sökning för att minska söktiden från minuter till sekunder på multi‑gigabyte‑samlingar.
  3. Compliance & reporting – tilldela dynamiskt lagringsperioder, konfidentialitetsnivåer eller revisionsflaggor som kan frågas för regulatoriska kontroller.

Prestandaöverväganden

  • Memory management – övervaka JVM‑heap och justera -Xmx (t.ex. -Xmx4g för index större än 2 GB).
  • Batch processing – gruppera attributändringar med AttributeChangeBatch för att minimera disk‑skrivningar; dela upp batcher större än 10 000 ändringar för att undvika transaktionstidsgränser.
  • Library updates – håll dig på den senaste GroupDocs.Search‑utgåvan; version 25.4 lägger till en 30 % hastighetsökning för attribut‑filterutvärdering jämfört med 24.x.

Vanliga problem och lösningar

ProblemVarför det händerHur man åtgärdar
Attributes not appliedHändelsehanteraren är inte registrerad före indexeringSe till att index.getEvents().FileIndexing.add(...) körs före alla index.add(...)‑anrop.
Search returns no resultsAttribütnamn stämmer inte (skiftlägeskänsligt)Använd exakta attributnamn när du skapar filter (createAttribute("main")).
Out‑of‑memory errors on large batchesFör många ändringar i en enda batchDela upp stora uppdateringar i mindre AttributeChangeBatch‑instanser (t.ex. 5 000 dokument per batch).
License not recognizedAnvänder prov‑JAR utan att tillämpa licensfilAnropa License license = new License(); license.setLicense("path/to/license.file"); före någon indexoperation.

Vanliga frågor

Q: Vad är förutsättningarna för att använda GroupDocs.Search i Java?
A: Java 8+, GroupDocs.Search‑biblioteket och grundläggande kunskap om indexeringskoncept.

Q: Hur installerar jag GroupDocs.Search via Maven?
A: Lägg till arkivet och beroendet som visas i Maven‑inställningsavsnittet i din pom.xml.

Q: Kan jag modifiera attribut efter att dokument har indexerats?
A: Ja, använd AttributeChangeBatch för att batch‑uppdatera dokumentattribut utan omindexering.

Q: Vad gör jag om min indexeringsprocess är långsam?
A: Optimera JVM‑minnet (-Xmx), använd batch‑uppdateringar och uppgradera till den senaste biblioteks‑versionen för prestandaförbättringar.

Q: Var kan jag hitta fler resurser om GroupDocs.Search för Java?
A: Besök den officiella dokumentationen eller utforska community‑forum.

Resurser


Senast uppdaterad: 2026-09-21
Testad med: GroupDocs.Search 25.4 for Java
Författare: 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");

Relaterade handledningar