Πώς να βελτιστοποιήσετε τα Shards στο GroupDocs.Search για Java: Ένας ολοκληρωμένος οδηγός

Η αποδοτική αναζήτηση εγγράφων είναι απαραίτητη για προγραμματιστές και επιχειρήσεις που διαχειρίζονται μεγάλα σύνολα δεδομένων ή χρειάζονται γρήγορη εσωτερική ανάκτηση. Σε αυτό το tutorial θα μάθετε how to configure search network java, πώς να δημιουργήσετε ευρετήριο και να κάνετε ερωτήματα σε έγγραφα, και τα ακριβή βήματα για optimize shards για μέγιστη απόδοση. Θα καλύψουμε επίσης πραγματικές περιπτώσεις χρήσης, κοινά προβλήματα και πρακτικές συμβουλές για να διατηρείτε τους κόμβους αναζήτησης σας σε ομαλή λειτουργία.

Σύντομες Απαντήσεις

  • Τι είναι η βελτιστοποίηση shard; Αναδιοργανώνει τα δεδομένα του ευρετηρίου για να επιταχύνει τα ερωτήματα και να μειώσει το αποθηκευτικό κόστος.
  • Πώς να διαμορφώσετε ένα δίκτυο αναζήτησης; Ορίστε έναν βασικό κατάλογο και θύρα, στη συνέχεια αναπτύξτε κόμβους χρησιμοποιώντας το παρεχόμενο API.
  • Πώς να εκτελέσετε αναζήτηση κειμένου; Χρησιμοποιήστε TextSearchInNetwork.searchAll με τη συμβολοσειρά ερωτήματος.
  • Πώς να δημιουργήσετε ευρετήριο εγγράφων σε Java; Προσθέστε καταλόγους εγγράφων στον κύριο κόμβο με IndexingDocuments.addDirectories.
  • Πώς να αντιμετωπίσετε συγκρούσεις θύρας; Αλλάξτε τη μεταβλητή basePort σε μια αχρησιμοποίητη θύρα στο μηχάνημά σας.

Πώς να διαμορφώσετε το δίκτυο αναζήτησης

Configuration αποθηκεύει όλες τις ρυθμίσεις που απαιτούνται για την εκκίνηση ενός δικτύου GroupDocs.Search, όπως η θέση του φακέλου ευρετηρίου και η θύρα επικοινωνίας.
SearchNetwork οργανώνει τους κόμβους, διαχειριζόμενο το ευρετήριο και τη διανομή ερωτημάτων.

Φορτώστε τη διαμόρφωση αναζήτησης, ορίστε τη βασική διαδρομή εγγράφων, επιλέξτε μια ελεύθερη θύρα και ξεκινήστε το δίκτυο — όλα σε λίγες γραμμές κώδικα. Αυτή η άμεση απάντηση εξηγεί όλη τη διαδικασία σε λιγότερο από 70 λέξεις: Create a Configuration object, set basePath and basePort, then call SearchNetwork.start(configuration). Το δίκτυο θα δημιουργήσει αυτόματα έναν κύριο κόμβο και τυχόν απαιτούμενους βοηθητικούς κόμβους, έτοιμο να δεχτεί αιτήματα ευρετηρίου.

Ορισμός Anchor

Configuration είναι η βασική κλάση που αποθηκεύει όλες τις ρυθμίσεις που απαιτούνται για την εκκίνηση ενός δικτύου GroupDocs.Search, όπως η θέση του φακέλου ευρετηρίου και η θύρα επικοινωνίας.

Για να αποφύγετε το τρομακτικό σφάλμα “port already in use”, πρώτα βεβαιωθείτε ότι η επιλεγμένη θύρα είναι ελεύθερη (π.χ., χρησιμοποιώντας netstat ή ένα απλό τεστ socket) πριν την εκκίνηση του δικτύου.

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

Πώς να δημιουργήσετε ευρετήριο εγγράφων σε Java

IndexingDocuments είναι μια βοηθητική κλάση που απλοποιεί την προσθήκη πολλαπλών καταλόγων σε έναν κόμβο αναζήτησης και ενεργοποιεί τη διαδικασία ευρετηρίου.

Προσθέστε τους φακέλους εγγράφων σας στον κύριο κόμβο, στη συνέχεια αφήστε το ευρετήριο να τους επεξεργαστεί. Direct answer: Καλέστε IndexingDocuments.addDirectories(masterNode, List.of("C:/Docs", "C:/MoreDocs")) και στη συνέχεια εκτελέστε masterNode.index()· η μηχανή θα δημιουργήσει αναζητήσιμα shards για κάθε φάκελο που παρείχατε. Αυτή η προσέγγιση κλιμακώνεται οριζόντια — προσθέστε περισσότερους κόμβους, και η ίδια μέθοδος διανέμει το φορτίο αυτόματα.

Ορισμός Anchor

IndexingDocuments είναι μια βοηθητική κλάση που απλοποιεί την προσθήκη πολλαπλών καταλόγων σε έναν κόμβο αναζήτησης και ενεργοποιεί τη διαδικασία ευρετηρίου.

String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Adjust if necessary

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

Πώς να εκτελέσετε αναζήτηση κειμένου

TextSearchInNetwork παρέχει στατικές βοηθητικές μεθόδους για τη μετάδοση ενός ερωτήματος κειμένου σε κάθε κόμβο του δικτύου και τη συγκέντρωση των αποτελεσμάτων.
SearchResult περιλαμβάνει το ID ενός ταιριασμένου εγγράφου, το απόσπασμα και το σκορ συνάφειας.

Εκτελέστε ένα ερώτημα σε όλα τα shards με μία κλήση μεθόδου. Direct answer: Χρησιμοποιήστε TextSearchInNetwork.searchAll("your query", searchNetwork)· η μέθοδος επιστρέφει μια συλλογή από αντικείμενα SearchResult που περιέχουν IDs εγγράφων, αποσπάσματα και σκορ συνάφειας. Μπορείτε να φιλτράρετε περαιτέρω τα αποτελέσματα ανά γλώσσα, τύπο αρχείου ή προσαρμοσμένα μεταδεδομένα χωρίς επιπλέον κώδικα.

Ορισμός Anchor

TextSearchInNetwork παρέχει στατικές βοηθητικές μεθόδους που μεταδίδουν ένα ερώτημα κειμένου σε κάθε κόμβο του δικτύου και συγκεντρώνουν τα αποτελέσματα.

String basePath = "YOUR_DOCUMENT_DIRECTORY/OptimizingShards/";
int basePort = 49132; // Change this if you encounter a network port issue

Πώς να αντιμετωπίσετε συγκρούσεις θύρας

Αν η προεπιλεγμένη θύρα (49132) είναι κατειλημμένη, απλώς επιλέξτε μια άλλη ελεύθερη θύρα και ενημερώστε το πεδίο basePort πριν ξεκινήσετε το δίκτυο. Direct answer: Αλλάξτε int basePort = 49132; σε μια αχρησιμοποίητη τιμή όπως 49133, ξαναχτίστε και επανεκκινήστε· το δίκτυο θα δεσμευτεί στη νέα θύρα χωρίς να επηρεάσει τους υπάρχοντες κόμβους.

Συμβουλή: Διατηρήστε ένα μικρό αρχείο διαμόρφωσης (π.χ., search-config.properties) ώστε να μπορείτε να αλλάξετε τη θύρα χωρίς επαναμεταγλώττιση.

Configuration configuration = ConfiguringSearchNetwork.configure(basePath, basePort);

Προαπαιτούμενα

Πριν ξεκινήσουμε, βεβαιωθείτε ότι έχετε τα παρακάτω προαπαιτούμενα.

Απαιτούμενες βιβλιοθήκες, εκδόσεις και εξαρτήσεις

Για να υλοποιήσετε αυτή τη λύση, συμπεριλάβετε τη βιβλιοθήκη GroupDocs.Search χρησιμοποιώντας Maven προσθέτοντας την ακόλουθη διαμόρφωση στο αρχείο pom.xml σας:

SearchNetworkNode[] nodes = SearchNetworkDeployment.deploy(basePath, basePort, configuration);
SearchNetworkNode masterNode = nodes[0];

Εναλλακτικά, κατεβάστε την πιο πρόσφατη έκδοση από GroupDocs.Search for Java releases.

Απαιτήσεις περιβάλλοντος

  • Java Development Kit (JDK) 8 ή νεότερο.
  • Δικαιώματα δικτύου που επιτρέπουν τη δέσμευση στην επιλεγμένη basePort.
  • Αρκετός χώρος στο δίσκο για τα αρχεία ευρετηρίου (κάθε shard μπορεί να καταλαμβάνει ~10 MB ανά 1.000 έγγραφα).

Προαπαιτούμενες γνώσεις

Μια βασική κατανόηση της Java, του αντικειμενοστραφούς προγραμματισμού και του χειρισμού εξαιρέσεων θα σας βοηθήσει να ακολουθήσετε τα παραδείγματα ομαλά.

Ρύθμιση GroupDocs.Search για Java

Για να αρχίσετε να χρησιμοποιείτε το GroupDocs.Search στο έργο σας, ακολουθήστε τα παρακάτω βήματα:

  1. Προσθήκη της εξάρτησης: Όπως φαίνεται παραπάνω, προσθέστε την απαραίτητη εξάρτηση Maven στο έργο σας ή κατεβάστε την απευθείας από τη σελίδα releases.
  2. Απόκτηση άδειας:
    • Free trial – δεν απαιτείται κλειδί άδειας, αλλά η χρήση περιορίζεται σε 500 έγγραφα ανά ημέρα.
    • Temporary license – ζητήστε ένα κλειδί δοκιμής 30 ημερών από GroupDocs Temporary License.
    • Full license – αγοράστε μια παραγωγική άδεια για απεριόριστη πρόσβαση και προτεραιότητα υποστήριξης.
  3. Βασική αρχικοποίηση και ρύθμιση:
    Αρχικοποιήστε τη διαμόρφωση χρησιμοποιώντας την κλάση Configuration, ορίζοντας τη βασική διαδρομή για τα έγγραφα και καθορίζοντας έναν αριθμό θύρας:
SearchNetworkNodeEvents.subscribe(masterNode);

Οδηγός υλοποίησης

Τώρα ας εξερευνήσουμε την υλοποίηση βασικών λειτουργιών χρησιμοποιώντας το GroupDocs.Search Java.

Λειτουργία: Διαμόρφωση δικτύου αναζήτησης

Overview: Η ρύθμιση ενός δικτύου αναζήτησης περιλαμβάνει τον ορισμό του καταλόγου εγγράφων σας και τη διαμόρφωσή του με μια συγκεκριμένη θύρα για επικοινωνία μεταξύ των κόμβων.

Βήμα 1: Ορισμός καταλόγων εγγράφων και θύρας

DocumentDirectory είναι ένας απλός κάτοχος για τη απόλυτη διαδρομή ενός φακέλου που θέλετε να ευρετηριάσετε. Παρέχετε μία ή περισσότερες διαδρομές στη διαμόρφωση.

IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath");
IndexingDocuments.addDirectories(masterNode, "YOUR_DOCUMENT_DIRECTORY/DocumentsPath2");

Βήμα 2: Διαμόρφωση δικτύου αναζήτησης

Δημιουργήστε το αντικείμενο διαμόρφωσης χρησιμοποιώντας τις ορισμένες διαδρομές:

TextSearchInNetwork.searchAll(masterNode, "ligula", false);

Λειτουργία: Ανάπτυξη κόμβων δικτύου αναζήτησης

Overview: Αναπτύξτε κόμβους για να διαχειρίζονται τις αναζητήσεις εγγράφων αποδοτικά στο δίκτυό σας.

Βήμα 1: Ανάπτυξη κόμβων χρησιμοποιώντας τη διαμόρφωση

Αναπτύξτε κόμβους δικτύου αναζήτησης και εντοπίστε τον κύριο κόμβο για κεντρική διαχείριση:

public static void optimizeShards(SearchNetworkNode node) {
    Indexer indexer = node.getIndexer();
    OptimizeOptions options = new OptimizeOptions();
    indexer.optimize(options);
}

optimizeShards(masterNode);

// Perform a second text search to observe optimization effects
TextSearchInNetwork.searchAll(masterNode, "ligula", false);

Λειτουργία: Εγγραφή σε συμβάντα κόμβου δικτύου

Overview: Παρακολουθήστε το δίκτυο αναζήτησης εγγραφόμενοι σε συμβάντα που σας ενημερώνουν για σημαντικές αλλαγές ή ενέργειες.

Βήμα 1: Εγγραφή σε συμβάντα κύριου κόμβου

SearchNetworkEventListener σας επιτρέπει να αντιδράτε στην ολοκλήρωση του ευρετηρίου, αποτυχίες κόμβων ή βελτιστοποιήσεις shards.

CODE_BLOCK_PLACEHOLDER_9_END

Λειτουργία: Ευρετηρίαση εγγράφων σε κόμβους δικτύου

Overview: Προσθέστε καταλόγους που περιέχουν έγγραφα στη διαδικασία ευρετηρίου για αποδοτικές αναζητήσεις.

Βήμα 1: Προσθήκη καταλόγων εγγράφων στη διαδικασία ευρετηρίου

Περάστε μια λίστα διαδρομών φακέλων στον κύριο κόμβο· η μηχανή θα δημιουργήσει ένα ξεχωριστό shard για κάθε φάκελο, επιτρέποντας παράλληλη εκτέλεση ερωτημάτων.

CODE_BLOCK_PLACEHOLDER_10_END

Λειτουργία: Αναζήτηση κειμένου σε κόμβους δικτύου

Overview: Εκτελέστε αναζητήσεις κειμένου σε όλα τα ευρετηριασμένα έγγραφα μέσα στο δίκτυο αναζήτησης.

Βήμα 1: Εκτέλεση αναζήτησης κειμένου

Κληθείτε τη στατική βοηθητική μέθοδο για να εκτελέσετε ένα ερώτημα και να ανακτήσετε τα ταιριαστά έγγραφα με σκορ συνάφειας.

CODE_BLOCK_PLACEHOLDER_11_END

Λειτουργία: Βελτιστοποίηση shards

Overview: Βελτιώστε την απόδοση βελτιστοποιώντας τα shards μέσα στο ευρετήριο του κόμβου δικτύου αναζήτησης.

Βήμα 1: Βελτιστοποίηση shards ευρετηρίου

Βελτιστοποιήστε τα shards για να βελτιώσετε την αποδοτικότητα της αναζήτησης (εδώ είναι που how to optimize shards είναι πραγματικά σημαντικό):

CODE_BLOCK_PLACEHOLDER_12_END

Πρακτικές Εφαρμογές

Το GroupDocs.Search για Java μπορεί να εφαρμοστεί σε διάφορα πραγματικά σενάρια, το καθένα ωφελείται από τη βελτιστοποίηση shards:

  1. Enterprise Document Management – Διαχειρίζεται αρχεία 10 TB+ με χρόνους ερωτήματος κάτω του δευτερολέπτου μετά τη βελτιστοποίηση shards.
  2. E‑commerce Platforms – Τροφοδοτεί την αναζήτηση προϊόντων σε 1 εκατομμύριο SKU, μειώνοντας τη καθυστέρηση έως 45 % όταν τα shards είναι βελτιστοποιημένα.
  3. Legal Firms – Ανακτά αρχεία υποθέσεων από αποθετήρια 200 GB σε λιγότερο από 200 ms.
  4. Library Systems – Υποστηρίζει αναζητήσεις καταλόγου για 500 k ψηφιακά βιβλία με αποδοτική χρήση μνήμης.
  5. Content Management Systems (CMS) – Ενεργοποιεί άμεση ανακάλυψη περιεχομένου για πολυ‑τοποικές εγκαταστάσεις με πάνω από 2 εκατομμύρια σελίδες.

Σκέψεις απόδοσης

Για να εξασφαλίσετε τη βέλτιστη απόδοση της υλοποίησής σας με το GroupDocs.Search:

  • Regularly optimize shards – Η εκτέλεση του optimizeShards() μετά από κάθε 10 GB νέων δεδομένων μειώνει τους χρόνους απόκρισης ερωτημάτων κατά 30‑50 %.
  • Monitor memory usage – Διατηρήστε τη μνήμη heap της JVM κάτω από 75 % της φυσικής RAM· ενεργοποιήστε το G1GC για μεγάλα ευρετήρια.
  • Use incremental indexing – Προσθέστε μόνο τα τροποποιημένα αρχεία για να αποφύγετε πλήρη επανευρετηρίαση.
  • Leverage multi‑node scaling – Προσθέστε κόμβους εργασίας για να διανείμετε τα shards· κάθε επιπλέον κόμβος μπορεί να βελτιώσει το throughput κατά ~20 % για φορτία εργασίας με έντονη ανάγνωση.

Κοινά προβλήματα και λύσεις

ΠρόβλημαΣυμπτωμαΛύση
Port conflict on startupjava.net.BindException: Address already in useChange basePort to an unused value; verify with netstat -ano.
Out‑of‑memory errors during optimizationjava.lang.OutOfMemoryError: Java heap spaceIncrease JVM -Xmx flag or run optimization on a dedicated node with more RAM.
Missing documents in search resultsNo results returned after indexingEnsure directories are correctly added via IndexingDocuments.addDirectories and that masterNode.index() completed without exceptions.
Stale shards after bulk deleteDeleted files still appearRun optimizeShards() to merge segments and purge tombstones.

Συχνές Ερωτήσεις

Q: Πώς η βελτιστοποίηση shards επηρεάζει την ταχύτητα ερωτήματος;
A: Η βελτιστοποίηση shards συμπιέζει το ευρετήριο, μειώνει το I/O του δίσκου και συνήθως προσφέρει 30‑50 % ταχύτερες απαντήσεις ερωτημάτων για μεγάλα σύνολα δεδομένων.

Q: Είναι ασφαλές να εκτελείται το optimizeShards σε ενεργό κόμβο;
A: Ναι, η λειτουργία έχει σχεδιαστεί ώστε να εκτελείται χωρίς διακοπή, αλλά συνιστάται ο προγραμματισμός της κατά τη διάρκεια περιόδων χαμηλής κίνησης για ευρετήρια μεγαλύτερα από 20 GB.

Q: Μπορώ να προσαρμόσω το OptimizeOptions;
A: Απόλυτα. Μπορείτε να ορίσετε παραμέτρους όπως maxSegmentSize ή mergeFactor για να ρυθμίσετε λεπτομερώς τη διαδικασία βελτιστοποίησης.

Q: Τι πρέπει να κάνω αν αντιμετωπίσω ένα IOException κατά τη βελτιστοποίηση;
A: Επαληθεύστε τα δικαιώματα του συστήματος αρχείων, βεβαιωθείτε ότι υπάρχει αρκετός ελεύθερος χώρος στο δίσκο και επιβεβαιώστε ότι καμία άλλη διαδικασία δεν κλειδώνει τα αρχεία του ευρετηρίου.

Q: Η βελτιστοποίηση shards ανακτά επίσης χώρο από διαγραμμένα έγγραφα;
A: Ναι, ο βελτιστοποιητής συγχωνεύει τα τμήματα και αφαιρεί τα tombstones, απελευθερώνοντας χώρο που κατείχαν τα διαγραμμένα έγγραφα.

Συμπέρασμα

Ακολουθώντας αυτόν τον ολοκληρωμένο οδηγό, τώρα γνωρίζετε πώς να configure search network java, να δημιουργήσετε ευρετήριο εγγράφων, να εκτελείτε ερωτήματα κειμένου και, το πιο σημαντικό, optimize shards για να διατηρήσετε την απόδοση αναζήτησής σας εξαιρετικά οξεία. Εφαρμόστε αυτά τα πρότυπα σε οποιαδήποτε λύση επιχειρηματικής αναζήτησης βασισμένη σε Java, και θα δείτε μετρήσιμες βελτιώσεις στην καθυστέρηση, την κλιμακωσιμότητα και τη χρήση πόρων. Για τα επόμενα βήματα, εξερευνήστε προχωρημένες λειτουργίες όπως προσαρμοσμένοι αναλυτές, faceted search και ενσωμάτωση με παρόχους αποθήκευσης cloud.


Last Updated: 2026-05-17
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs

Σχετικά tutorials