Opérateurs booléens Java – créer un index de recherche et recherche à facettes

Mettre en œuvre une expérience de recherche puissante en Java peut sembler intimidant, surtout lorsque vous devez créer un index de recherche Java qui prend en charge les opérateurs booléens Java pour les requêtes à facettes et complexes. Dans ce tutoriel, nous parcourrons la configuration de GroupDocs.Search for Java, la création d’un index, l’ajout de documents, et la conception à la fois de recherches simples à facettes et de requêtes multi‑critères sophistiquées utilisant la logique booléenne. À la fin, vous comprendrez comment exploiter les opérations content search Java, filename search Java, et même update index Java pour garder vos données à jour.

Réponses rapides

  • Qu’est-ce qu’une recherche à facettes ? Une façon de filtrer les résultats par catégories prédéfinies telles que le type de fichier ou la date.
  • Comment créer un index de recherche Java ? Initialise un objet Index pointant vers un dossier et ajoute des documents.
  • Puis-je combiner plusieurs critères avec des opérateurs booléens ? 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 fonctionne le mieux ? Tout IDE Java (IntelliJ IDEA, Eclipse, NetBeans) fonctionne bien.

Qu’est-ce que « créer un index de recherche java » ?

Créer un index de recherche Java signifie construire une structure basée sur le disque qui stocke le texte des documents et leurs métadonnées, permettant une récupération instantanée des documents correspondants via des requêtes. L’index associe les termes aux identifiants des documents, prend en charge des recherches rapides et peut être mis à jour de façon incrémentielle lorsque les fichiers changent, fournissant la base pour des fonctionnalités de recherche puissantes.

Pourquoi utiliser GroupDocs.Search pour les requêtes à facettes et complexes ?

GroupDocs.Search for Java fournit la facette intégrée, la prise en charge des requêtes booléennes et un indexage haute performance capable de gérer jusqu’à 10 millions de documents tout en maintenant une latence de requête inférieure à 200 ms sur du matériel serveur typique. Il offre des filtres de champs prêts à l’emploi, un langage de requête riche et une compatibilité pure Java, ce qui le rend idéal pour les scénarios de recherche à l’échelle de l’entreprise.

Prérequis

  • JDK 8 ou version supérieure 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.

Configuration de GroupDocs.Search pour Java

Configuration Maven

Add the repository and dependency to your pom.xml file:

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

Téléchargement direct

Alternatively, download the latest JAR from the official release page:
Versions GroupDocs.Search pour Java

Acquisition de licence

To unlock full functionality:

  1. Essai gratuit – parfait pour le développement et les tests.
  2. Licence d’évaluation temporaire – prolonge les limites de l’essai.
  3. Licence commerciale – supprime toutes les restrictions pour la production.

Initialisation et configuration de base

La classe Index est le composant central qui représente un index interrogeable stocké sur disque. Le fragment 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 utiliser les opérateurs booléens java – Recherche simple à facettes

Chargez votre index, ajoutez des documents et lancez une requête de champ ; le modèle en deux étapes vous permet de récupérer les comptes de facettes et les résultats filtrés en un seul appel. Cette approche offre aux utilisateurs un moyen intuitif de restreindre les résultats par catégories telles que le type de fichier, l’auteur ou les métadonnées personnalisées.

É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 contenu 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 leur texte principal.

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 granulaire. Ici, nous construisons une requête de mot, l’enveloppons dans une requête de champ, et 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 utiliser les opérateurs booléens java – Recherche de requête complexe

Pour exécuter une requête complexe, combinez plusieurs conditions de champ avec les opérateurs AND/OR/NOT, et incluez éventuellement des recherches de phrases. Vous pouvez spécifier chaque condition à l’aide de requêtes de champ, les imbriquer avec des opérateurs booléens, et contrôler la pertinence avec le boosting, vous permettant de ne récupérer que les documents les plus pertinents qui satisfont tous les critères requis.

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

ScénarioComment la facette aideExemple de requête
Catalogue e‑commerceFiltrer par catégorie, prix, marquecategory: Electronics AND price:[100 TO 500]
Référentiel de documents juridiquesRestreindre par numéro de dossier, juridictioncaseNumber: 2023-045 AND jurisdiction: "California"
Archives de rechercheCombiner auteur, année de publication, mots‑clés(author: "Doe") AND (year: 2022) AND (keywords: "machine learning")
Intranet d’entrepriseRechercher par type de fichier et départementfiletype: pdf AND department: HR

Pièges courants & dépannage

L’objet SearchResult contient les documents qui correspondent à une requête et fournit l’accès à leurs scores de pertinence et aux fragments mis en évidence.
La classe CommonFieldNames définit les noms de champs standard tels que Content et FileName utilisés dans toute l’API.

  • Résultats vides – Vérifiez que les documents ont été ajoutés avec succès (index.getDocumentCount() peut aider).
  • Index obsolète – Après avoir ajouté ou supprimé des fichiers, appelez index.update() pour update index java et garder l’index synchronisé.
  • Noms de champ 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.
  • Mise en évidence manquante – Pour highlight search results java, récupérez les fragments correspondants via SearchResult.getFragments() (non montré ici mais disponible dans l’API).

Questions fréquemment posées

Q : Puis-je utiliser GroupDocs.Search avec Spring Boot ?
R : Absolument. Ajoutez la dépendance Maven, configurez l’index comme un bean Spring, et injectez‑le partout où vous avez besoin de capacités de recherche.

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 pour la facette.

Q : Quelle taille maximale peut atteindre l’index ?
R : L’index basé sur le disque peut gérer jusqu’à 10 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 simples à facettes et des recherches booléennes sophistiquées en utilisant les boolean operators java. Ces capacités vous permettent d’offrir des expériences de recherche rapides, précises et conviviales sur 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 highlighting, suggestions, et real‑time indexing pour renforcer davantage la puissance de recherche de votre application.


Dernière mise à jour : 2026-08-26
Testé avec : GroupDocs.Search 25.4 for Java
Auteur : GroupDocs

Tutoriels associés