Maison  >  Article  >  Java  >  Utilisation de Solr pour la recherche en texte intégral dans le développement d'API Java

Utilisation de Solr pour la recherche en texte intégral dans le développement d'API Java

WBOY
WBOYoriginal
2023-06-18 10:41:191322parcourir

Avec le développement d'Internet et la croissance explosive de l'information, la quantité d'informations auxquelles nous pouvons désormais accéder et obtenir est très importante, qu'il s'agisse d'informations obtenues à partir de pages Web, de documents ou de la vie quotidienne, elles nécessitent un moyen efficace de les traiter et de les obtenir. gérer le. La recherche en texte intégral est un moyen très efficace et couramment utilisé pour localiser et extraire les informations dont nous avons besoin via des mots-clés ou des expressions, et Solr est un outil très adapté au développement de la recherche en texte intégral.

Cet article présentera les concepts de base de Solr et comment utiliser Solr pour la recherche en texte intégral dans le développement d'API Java.

1. Introduction à Solr

Solr est essentiellement une plate-forme de recherche d'entreprise open source, basée sur la bibliothèque Java d'Apache Lucene et fournissant des API REST pratiques. Selon l'introduction officielle de Solr, il comprend principalement les fonctionnalités suivantes :

  • Recherche en texte intégral
  • Recherche en temps réel
  • Recherche sur site Web
  • Recherche distribuée
  • Intégration de base de données
  • Analyse de plusieurs formats de fichiers
  • Exportation de plusieurs formats de fichiers
  • Configuration externe

En tant que plate-forme de recherche au niveau de l'entreprise, Solr fournit des fonctions de recherche très complètes et des méthodes de configuration flexibles, ce qui nous permet de développer facilement des modules de recherche en développement réel. Ci-dessous, nous nous concentrerons sur la façon d'utiliser Solr pour la recherche en texte intégral dans le développement d'API Java.

2. Utilisez Solr pour la recherche en texte intégral

2.1 Installez Solr

Tout d'abord, nous devons installer Solr dans l'environnement local ou sur le serveur. Solr fournit officiellement un moyen très pratique d'installer et d'exécuter Solr :

  • Téléchargez l'adresse de Solr : https://lucene.apache.org/solr/downloads.html.
  • Décompressez le fichier : tar -zxvf solr-x.x.x.zip.
  • Entrez le dossier décompressé : cd solr-x.x.x.
  • Démarrer Solr : démarrage bin/solr.

2.2 Créer Solr Core et définir un schéma

Solr Core est un concept essentiel dans Solr. Il équivaut à un environnement de recherche indépendant, comprenant l'indexation des données et le traitement des demandes de recherche. Dans Solr, nous pouvons créer plusieurs cœurs, et chaque cœur peut avoir une configuration et des ensembles de données indépendants.

Dans Solr, nous devons d'abord créer un Core puis définir le schéma de recherche. Le schéma définit les champs de données, les types, les index et d'autres attributs, qui affecteront l'efficacité et la précision de la recherche.

Vous pouvez utiliser le schéma de Solr ou un schéma défini par l'utilisateur pour définir les attributs de champ requis pour la recherche. Nous présentons ici l'utilisation du schéma par défaut de Solr.

Utilisez le schéma par défaut de Solr :

  1. Créer un noyau :

    bin/solr create_core -c <core name>
  2. Effacer tous les champs créés :

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '{"delete-all-fields":{}}'
  3. Ajouter des champs :

    curl http://localhost:8983/solr/<core name>/schema -H 'Content-type:application/json' -d '
     {
       "add-field":{
          "name":"field_name",
          "type":"string",
          "stored":true
        }
     }'
  4. Redémarrer le service Solr

Utiliser le schéma de personnalisation de l'utilisateur :

Les utilisateurs peuvent personnaliser Schema pour répondre aux différents besoins des applications. Solr fournit l'API Schema. Fournit un ajout facile au schéma pour les créateurs.

  1. Créer un noyau :

    bin/solr create_core -c <core name>
  2. Ajouter un champ :

    • Ajouter un type de champ :
      Envoyer une requête POST au serveur Solr, content_type est défini sur application/json
    {   
         "add-field-type": {   
           "name":"test_fieldType","class":"solr.TextField","indexAnalyzer":{   
              "tokenizer":{   
                 "class":"solr.StandardTokenizerFactory"   
              },"filters":[  
              {   
                  "class":"solr.StopFilterFactory",   
                  "ignoreCase":true,   
                  "words":"stopword.txt",   
                  "format":"snowball",   
                  "enablePositionIncrements":true   
              },{   
                  "class":"solr.SnowballPorterFilterFactory",   
                  "language":"English"   
              }   
             ],   
             "queryAnalyzer":{   
                 "tokenizer":{   
                    "class":"solr.StandardTokenizerFactory"   
                  },"filters":[  
                  {   
                     "class":"solr.StopFilterFactory",   
                     "ignoreCase":true,   
                     "words":"stopword.txt",   
                     "format":"snowball",   
                     "enablePositionIncrements":true   
                  },{   
                     "class":"solr.SnowballPorterFilterFactory",   
                     "language":"English"   
                   }   
                 ]   
              }   
           }   
    }
    • Ajouter un champ (titre) :
    {
         "add-field": {
             "name": "title",
             "type": "text_en",
             "stored": true
         }
    }

    Une réponse sera renvoyée une fois le champ ajouté avec succès.

  3. Spécifiez ce schéma dans la configuration Solr :

    Entrez le répertoire ${core}/conf pour modifier solrconfig.xml et ajoutez le code suivant :

    <schemaFactory class="ClassicIndexSchemaFactory"/>
    <schema name="schema_name" version="1.5">
        <field name="title" type="text_en" indexed="true" stored="true" />
    </schema>

2. Utilisez Solr dans l'API Java pour le texte intégral search

Ensuite, nous verrons comment utiliser l'API Java de Solr pour la recherche en texte intégral dans une application Web Java.

  1. Ajouter une dépendance SolrJ

Dans le projet Maven, nous devons ajouter une dépendance SolrJ. Solr fournit officiellement une dépendance très pratique :

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>8.2.0</version>
</dependency>
  1. Utilisez SolrJ pour rechercher dans le code

Dans le code Java, nous pouvons utiliser. QueryResponse et SolrClient fournis par SolrJ pour effectuer des opérations de recherche. Les données interrogées peuvent être visualisées sous forme de paires clé-valeur.

Tout d'abord, nous devons créer une instance de SolrClient. Dans SolrJ, SolrClient est le client de Solr et fournit une méthode pour appeler directement l'API REST Solr.

String solrUrl = "http://localhost:8983/solr/core_name";
SolrClient solr = new HttpSolrClient.Builder(solrUrl).build();

Ensuite, nous devons créer un objet SolrQuery, qui est utilisé pour définir les paramètres de recherche, notamment les mots-clés de recherche, les règles de tri, les conditions de filtrage, etc.

SolrQuery query = new SolrQuery();
query.setQuery("keyword");
query.setStart(0);
query.setRows(10);
query.setSort("sort_field", SolrQuery.ORDER.asc);
query.addFilterQuery("filter_field:filter_value");

Enfin, nous pouvons effectuer la recherche via la méthode solr.query(query), et la QueryResponse renvoyée contient les résultats de la recherche et les informations de métadonnées associées. Nous devons obtenir la liste des résultats de la recherche via la méthode Response.getResults().

QueryResponse response = solr.query(query);
SolrDocumentList results = response.getResults();

En développement réel, nous pouvons également effectuer un traitement secondaire sur les résultats de recherche si nécessaire, comme la conversion des résultats au format JSON ou en objets Java.

for (SolrDocument result : results) {
    String id = (String) result.getFieldValue("id");
    String title = (String) result.getFieldValue("title");
    String content = (String) result.getFieldValue("content");
    
    // 将搜索结果转换为 Java 实体类
    SearchResult item = new SearchResult(id, title, content);
    
    // 或将搜索结果转换为 JSON 字符串
    String json = new ObjectMapper().writeValueAsString(result);
}

Ce qui précède est le processus de base d'utilisation de Solr pour la recherche en texte intégral dans le développement d'API Java. Solr fournit des fonctions de recherche très complètes et un support API Java, nous permettant de développer facilement des modules de recherche efficaces et précis pour offrir aux utilisateurs une meilleure expérience de recherche.

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