Maison Java javaDidacticiel Comment utiliser Java pour implémenter la fonction de recherche en texte intégral du système CMS

Comment utiliser Java pour implémenter la fonction de recherche en texte intégral du système CMS

Aug 07, 2023 pm 12:45 PM
java cms 全文搜索

Comment utiliser Java pour implémenter la fonction de recherche en texte intégral d'un système CMS

À l'ère d'Internet moderne, les systèmes de gestion de contenu (CMS) sont devenus un outil essentiel pour de nombreuses entreprises et sites Web. Dans un énorme système CMS, la fonction de recherche en texte intégral est une fonction très importante. La fonction de recherche en texte intégral peut aider les utilisateurs à récupérer rapidement et précisément le contenu requis et à améliorer l'expérience utilisateur.

Cet article expliquera comment utiliser le langage Java pour implémenter la fonction de recherche en texte intégral du système CMS et expliquera les étapes et les méthodes en détail à travers des exemples de code.

Tout d’abord, nous devons choisir un moteur de recherche en texte intégral adapté. Lucene est un moteur de recherche en texte intégral très populaire et puissant. Il fournit des fonctions riches et des API flexibles et convient à une variété de scénarios d'application différents. Dans cet article, nous utiliserons Lucene pour implémenter la fonctionnalité de recherche en texte intégral.

La première étape consiste à introduire les dépendances Lucene. Dans le projet Maven, nous pouvons ajouter le code suivant dans le fichier pom.xml :

<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-core</artifactId>
    <version>8.6.3</version>
</dependency>
<dependency>
    <groupId>org.apache.lucene</groupId>
    <artifactId>lucene-analyzers-common</artifactId>
    <version>8.6.3</version>
</dependency>
Copier après la connexion

Dans la deuxième étape, nous devons créer l'index. L'index constitue la base de la recherche en texte intégral et contient les documents recherchés et leurs attributs. Dans notre système CMS, chaque document peut représenter une page web, un article ou un paragraphe de texte. Nous pouvons créer un index via le code suivant :

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.*;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
import org.apache.lucene.store.FSDirectory;

import java.io.IOException;
import java.nio.file.Paths;

public class Indexer {
    private IndexWriter indexWriter;

    public Indexer(String indexDir) throws IOException {
        Analyzer analyzer = new StandardAnalyzer();
        IndexWriterConfig config = new IndexWriterConfig(analyzer);
        FSDirectory directory = FSDirectory.open(Paths.get(indexDir));
        indexWriter = new IndexWriter(directory, config);
    }

    public void index(String content) throws IOException {
        Document doc = new Document();
        doc.add(new TextField("content", content, Field.Store.YES));
        indexWriter.addDocument(doc);
    }

    public void close() throws IOException {
        indexWriter.close();
    }
}
Copier après la connexion

Le code ci-dessus crée une classe Indexer, qui est responsable de la création et de la gestion des index. Dans la méthode de construction, nous utilisons la classe StandardAnalyzer pour segmenter le texte ; puis utilisons la classe IndexWriterConfig pour configurer le rédacteur d'index ; enfin, spécifions le répertoire dans lequel l'index est stocké et créons un objet IndexWriter.

La méthode index reçoit un paramètre de chaîne content, qui représente le contenu du texte à indexer. Dans cette méthode, nous créons d’abord un objet Document, puis ajoutons un TextField à l’objet et utilisons le paramètre content comme valeur du Field. Enfin, le document est ajouté à l'index en appelant la méthode addDocument d'IndexWriter.

La troisième étape, nous devons implémenter la fonction de recherche. Utilisez le code suivant pour implémenter :

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.*;
import org.apache.lucene.store.FSDirectory;

import java.io.IOException;
import java.nio.file.Paths;

public class Searcher {
    private IndexSearcher indexSearcher;
    private QueryParser queryParser;

    public Searcher(String indexDir) throws IOException {
        IndexReader indexReader = DirectoryReader.open(FSDirectory.open(Paths.get(indexDir)));
        indexSearcher = new IndexSearcher(indexReader);
        Analyzer analyzer = new StandardAnalyzer();
        queryParser = new QueryParser("content", analyzer);
    }

    public TopDocs search(String queryStr, int numResults) throws Exception {
        Query query = queryParser.parse(queryStr);
        return indexSearcher.search(query, numResults);
    }

    public Document getDocument(ScoreDoc scoreDoc) throws IOException {
        return indexSearcher.doc(scoreDoc.doc);
    }
}
Copier après la connexion

Le code ci-dessus crée une classe Searcher, chargée d'effectuer les opérations de recherche. Dans le constructeur, nous ouvrons le répertoire d'index et créons les objets IndexSearcher et QueryParser. IndexSearcher est utilisé pour effectuer des opérations de recherche et QueryParser est utilisé pour analyser les termes de recherche de l'utilisateur.

La méthode de recherche reçoit un paramètre de chaîne queryStr, qui représente le terme de recherche de l'utilisateur, et un paramètre entier numResults, qui représente le nombre de résultats renvoyés. Dans cette méthode, nous utilisons d'abord la méthode parse de QueryParser pour analyser les termes de recherche en objets Query. Ensuite, appelez la méthode de recherche d'IndexSearcher pour effectuer l'opération de recherche et renvoyer un objet TopDocs, qui contient les résultats de la recherche.

La méthode getDocument reçoit un objet ScoreDoc, qui représente un document dans les résultats de recherche. En appelant la méthode doc d'indexSearcher, nous pouvons obtenir les informations détaillées du document.

Enfin, nous pouvons appeler la méthode d'indexation de l'indexeur dans la page correspondante du système CMS pour ajouter le document à l'index, puis utiliser la méthode de recherche du chercheur pour effectuer l'opération de recherche et obtenir les résultats de la recherche en appelant la méthode getDocument du chercheur. .

Grâce aux étapes ci-dessus, nous avons implémenté avec succès la fonction de recherche en texte intégral du système CMS en utilisant le langage Java. En utilisant Lucene comme moteur de recherche, nous pouvons récupérer rapidement et avec précision le contenu requis dans un énorme système CMS, améliorant ainsi l'expérience utilisateur.

L'exemple de code a suivi des étapes et des instructions détaillées, j'espère qu'il vous sera utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Expliquez les capacités de recherche en texte intégral InNODB. Expliquez les capacités de recherche en texte intégral InNODB. Apr 02, 2025 pm 06:09 PM

Les capacités de recherche en texte intégral d'InNODB sont très puissantes, ce qui peut considérablement améliorer l'efficacité de la requête de la base de données et la capacité de traiter de grandes quantités de données de texte. 1) INNODB implémente la recherche de texte intégral via l'indexation inversée, prenant en charge les requêtes de recherche de base et avancées. 2) Utilisez la correspondance et contre les mots clés pour rechercher, prendre en charge le mode booléen et la recherche de phrases. 3) Les méthodes d'optimisation incluent l'utilisation de la technologie de segmentation des mots, la reconstruction périodique des index et l'ajustement de la taille du cache pour améliorer les performances et la précision.

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

See all articles