Créer un index de recherche Java – Recherches à facettes et complexes
Implémenter une expérience de recherche puissante en Java peut sembler intimidant, surtout lorsque vous devez créer un index de recherche Java pour des projets qui gèrent de grandes collections de documents. Heureusement, GroupDocs.Search for Java fournit une API riche qui vous permet de créer des requêtes à facettes et complexes en quelques lignes de code. Dans ce tutoriel, vous découvrirez comment configurer la bibliothèque, créer un index de recherche Java, ajouter des documents, et exécuter à la fois des recherches à facettes simples et des requêtes multi‑critères sophistiquées.
Quick Answers
- Qu’est‑ce qu’une recherche à facettes ? Une façon de filtrer les résultats par catégories prédéfinies (par ex., type de fichier, date).
- Comment créer un index de recherche Java ? Initialise un objet
Indexpointant vers un dossier et ajoute des documents. - Puis‑je combiner plusieurs critères ? Oui—utilisez des requêtes basées sur des objets ou des opérateurs booléens dans une requête texte.
- Ai‑je besoin d’une licence ? Un essai gratuit suffit pour le développement ; une licence commerciale supprime les limites.
- Quel IDE est le plus adapté ? Tout IDE Java (IntelliJ IDEA, Eclipse, NetBeans) fonctionne parfaitement.
Qu’est‑ce que « créer un index de recherche java » ?
Créer un index de recherche en Java signifie construire une structure de données interrogeable qui stocke les métadonnées et le contenu des documents, permettant une récupération rapide basée sur les requêtes des utilisateurs. Avec GroupDocs.Search, l’index est stocké sur le disque, peut être mis à jour de façon incrémentielle, et prend en charge des fonctionnalités avancées comme les facettes et la logique booléenne complexe.
Pourquoi utiliser GroupDocs.Search pour des requêtes à facettes et complexes ?
- Facettage prêt à l’emploi – filtrer par champs tels que le nom de fichier, la taille ou des métadonnées personnalisées.
- Langage de requête riche – combiner des requêtes texte, phrase et champ en utilisant les opérateurs AND/OR/NOT.
- Performance évolutive – indexe des millions de documents tout en maintenant une faible latence de recherche.
- Pure Java – aucune dépendance native, fonctionne sur toute plateforme exécutant JDK 8+.
Prerequisites
Avant de commencer, assurez‑vous d’avoir les éléments suivants :
- JDK 8 ou supérieur installé et configuré dans votre IDE.
- Maven (ou Gradle) pour la gestion des dépendances.
- GroupDocs.Search for Java ≥ 25.4.
- Familiarité de base avec les concepts OOP Java et la structure de projet Maven.
Setting Up GroupDocs.Search for Java
Maven Setup
Ajoutez le dépôt et la dépendance à votre fichier 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>
Direct Download
Sinon, téléchargez le JAR le plus récent depuis la page officielle des releases :
GroupDocs.Search for Java releases
License Acquisition
Pour débloquer toutes les fonctionnalités :
- Essai gratuit – idéal pour le développement et les tests.
- Licence d’évaluation temporaire – prolonge les limites de l’essai.
- Licence commerciale – supprime toutes les restrictions pour l’utilisation en production.
Basic Initialization and Setup
L’extrait suivant montre comment créer un index de recherche Java en instanciant la classe Index :
import com.groupdocs.search.Index;
public class SearchSetup {
public static void main(String[] args) {
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
// Create an instance of Index – this creates the on‑disk index
Index index = new Index(indexFolder);
System.out.println("GroupDocs.Search initialized successfully!");
}
}
Avec l’index prêt, nous pouvons passer aux requêtes à facettes et complexes du monde réel.
Comment créer un index de recherche java – Recherche à facettes simple
La recherche à facettes permet aux utilisateurs finaux de restreindre les résultats en sélectionnant des valeurs parmi des catégories prédéfinies (facettes). Voici un guide étape par étape.
Étape 1 : Créer un index
Tout d’abord, pointez le Index vers un dossier où les fichiers d’index seront stockés.
import com.groupdocs.search.Index;
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/SimpleFacetedSearch";
Index index = new Index(indexFolder);
Étape 2 : Ajouter des documents à l’index
Indiquez à GroupDocs.Search où se trouvent vos documents sources. Tous les types de fichiers pris en charge (PDF, DOCX, TXT, etc.) seront indexés automatiquement.
import com.groupdocs.search.Index;
String documentsFolder = "YOUR_DOCUMENT_DIRECTORY";
// Adding documents to the index
index.add(documentsFolder);
Étape 3 : Effectuer une recherche dans le champ Content avec une requête texte
Une requête texte rapide filtre par le champ content. La syntaxe content: Pellentesque limite les résultats aux documents contenant le mot Pellentesque dans le texte du corps.
import com.groupdocs.search.results.SearchResult;
String query1 = "content: Pellentesque";
SearchResult result1 = index.search(query1);
// Output search results
System.out.println("Documents found (query 1): " + result1.getDocumentCount());
Étape 4 : Effectuer une recherche en utilisant une requête objet
Les requêtes basées sur des objets offrent un contrôle fin. Ici, nous construisons une requête mot, l’encapsulons dans une requête de champ, puis l’exécutons.
import com.groupdocs.search.SearchQuery;
import com.groupdocs.search.options.CommonFieldNames;
SearchQuery wordQuery = SearchQuery.createWordQuery("Pellentesque");
SearchQuery fieldQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content, wordQuery);
SearchResult result2 = index.search(fieldQuery);
// Output search results
System.out.println("Documents found (query 2): " + result2.getDocumentCount());
Comment créer un index de recherche java – Recherche de requêtes complexes
Les requêtes complexes combinent plusieurs champs, des opérateurs booléens et des recherches de phrases. C’est idéal pour des scénarios tels que les filtres e‑commerce ou la recherche de documents juridiques.
Étape 1 : Créer un index pour les requêtes complexes
Réutilisez la même structure de dossiers ; vous pouvez partager l’index entre les scénarios simples et complexes.
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Searching/FacetedSearch/ComplexQuery";
Index index = new Index(indexFolder);
index.add(documentsFolder);
Étape 2 : Effectuer une recherche avec une requête texte
La requête suivante recherche des fichiers nommés lorem et ipsum ou du contenu contenant l’une des deux phrases exactes.
import com.groupdocs.search.results.SearchResult;
String query1 = "(filename: (lorem AND ipsum)) OR (content: (\"lectus eu aliquam\" OR \"dignissim turpis\"))";
SearchResult result1 = index.search(query1);
// Output search results
class SearchResult {
public int getDocumentCount() {
// Implementation here
return 0; // Placeholder
}
}
System.out.println("Documents found (complex text query): " + result1.getDocumentCount());
Étape 3 : Effectuer une recherche avec une requête objet
La construction basée sur des objets reflète la requête textuelle mais offre la sécurité de type et l’assistance de l’IDE.
import com.groupdocs.search.SearchQuery;
SearchQuery word6Query = SearchQuery.createWordQuery("lorem");
SearchQuery word7Query = SearchQuery.createWordQuery("ipsum");
// Constructing AND, OR queries for filename field
SearchQuery andQuery = SearchQuery.createAndQuery(word6Query, word7Query);
SearchQuery filenameQuery = SearchQuery.createFieldQuery(CommonFieldNames.FileName, andQuery);
// Content search using OR query with phrases
SearchQuery phrase1Query = SearchQuery.createPhraseSearchQuery("lectus", "eu", "aliquam");
SearchQuery phrase2Query = SearchQuery.createPhraseSearchQuery("dignissim", "turpis");
SearchQuery contentQuery = SearchQuery.createFieldQuery(CommonFieldNames.Content,
SearchQuery.createOrQuery(phrase1Query, phrase2Query));
// Final root query combining filename and content queries
SearchQuery rootQuery = SearchQuery.createOrQuery(filenameQuery, contentQuery);
SearchResult result2 = index.search(rootQuery);
// Output search results
System.out.println("Documents found (complex object query): " + result2.getDocumentCount());
Applications pratiques des recherches à facettes et complexes
| Scenario | How Faceting Helps | Example Query |
|---|---|---|
| Catalogue e‑commerce | Filtrer par catégorie, prix, marque | category: Electronics AND price:[100 TO 500] |
| Référentiel de documents juridiques | Restreindre par numéro de dossier, juridiction | caseNumber: 2023-045 AND jurisdiction: "California" |
| Archives de recherche | Combiner auteur, année de publication, mots‑clés | (author: "Doe") AND (year: 2022) AND (keywords: "machine learning") |
| Intranet d’entreprise | Rechercher par type de fichier et département | filetype: pdf AND department: HR |
Pièges courants & dépannage
- Résultats vides – Vérifiez que les documents ont bien été ajoutés (
index.getDocumentCount()peut aider). - Index obsolète – Après avoir ajouté ou supprimé des fichiers, appelez
index.update()pour garder l’index synchronisé. - Noms de champs incorrects – Utilisez les constantes
CommonFieldNames(Content,FileName, etc.) pour éviter les fautes de frappe. - Goulots d’étranglement de performance – Pour de très grandes collections, envisagez d’activer
index.setCacheSize()ou d’utiliser un SSD dédié pour le dossier d’index.
Frequently Asked Questions
Q : Puis‑je utiliser GroupDocs.Search avec Spring Boot ?
R : Absolument. Il suffit d’ajouter la dépendance Maven, de configurer l’index comme bean Spring, et de l’injecter où nécessaire.
Q : La bibliothèque prend‑elle en charge les champs de métadonnées personnalisés ?
R : Oui – vous pouvez ajouter des champs définis par l’utilisateur lors de l’indexation puis les utiliser comme facettes.
Q : Quelle taille peut atteindre l’index ?
R : L’index est basé sur le disque et peut gérer des millions de documents ; assurez‑vous simplement d’avoir suffisamment d’espace de stockage et surveillez les paramètres de cache.
Q : Existe‑t‑il un moyen de classer les résultats par pertinence ?
R : GroupDocs.Search attribue automatiquement un score aux correspondances ; vous pouvez récupérer le score via SearchResult.getDocument(i).getScore().
Q : Que se passe‑t‑il si j’indexe des PDF chiffrés ?
R : Fournissez le mot de passe lors de l’ajout du document : index.add(filePath, password).
Conclusion
À présent, vous devriez être à l’aise pour créer un index de recherche Java avec GroupDocs.Search, ajouter des documents, et concevoir à la fois des requêtes à facettes simples et des recherches booléennes sophistiquées. Ces capacités vous permettent d’offrir des expériences de recherche rapides, précises et conviviales dans un large éventail d’applications—des plateformes e‑commerce aux bases de connaissances d’entreprise.
Prêt pour l’étape suivante ? Explorez les fonctionnalités avancées de GroupDocs.Search telles que le mise en évidence, les suggestions, et l’indexation en temps réel pour renforcer davantage la puissance de recherche de votre application.
Last Updated: 2025-12-16
Tested With: GroupDocs.Search 25.4 for Java
Author: GroupDocs