Maison > développement back-end > Golang > le corps du texte

Utiliser Apache Solr avec Go : un guide complet

WBOY
Libérer: 2023-06-17 13:05:18
original
1137 Les gens l'ont consulté

Avec le développement d'Internet, nous sommes confrontés à de plus en plus de données. Non seulement cela, nous devons également extraire des informations utiles de ces données. Dans ce contexte, les moteurs de recherche deviennent de plus en plus importants car ils peuvent trouver les informations dont nous avons besoin grâce à des algorithmes de recherche efficaces et précis.

Apache Solr est une plateforme de recherche construite sur Lucene. Elle offre une multitude de fonctionnalités, notamment la recherche en texte intégral, la segmentation des mots, le filtrage, le tri, les statistiques, la mise en évidence, la complétion automatique, etc. Contrairement à d'autres moteurs de recherche, Solr propose des itinéraires de recherche programmables et les utilisateurs peuvent étendre la plateforme via des plug-ins et des requêtes personnalisées.

Dans cet article, nous présenterons comment utiliser Apache Solr en langage Go, de la connexion à la requête en passant par l'analyse des résultats, et analyserons de manière approfondie l'utilisation de Solr.

  1. Connectez-vous au serveur Solr

Tout d'abord, nous devons nous connecter au serveur Solr en utilisant le langage Go. Vous pouvez utiliser la bibliothèque tierce github.com/rtt/Go-Solr, qui fournit des méthodes pour interagir avec le serveur Solr.

Installez la bibliothèque : go get -u github.com/rtt/Go-Solrgo get -u github.com/rtt/Go-Solr

import (
    "github.com/rtt/Go-Solr"
)

solr, err := solr.Init("http://localhost:8983/solr/core")
if err != nil {
    log.Fatalln(err)
}
Copier après la connexion

我们需要提供Solr服务器的地址,在这个例子中,地址是http://localhost:8983/solr/core。如果未能成功连接,库将返回一个错误对象。

  1. 添加文档

接下来,我们需要将我们的数据添加到Solr索引中。在Solr中,文档是由字段组成的,每个字段有一个名字和一个值。

doc := solr.Document{}
doc.Add("id", "1")
doc.Add("title", "Solr Basics")
doc.Add("author", "John Doe")
doc.Add("text", "Solr is a search platform built on top of Lucene.")
response, err := solr.Add(&doc)
if err != nil {
    log.Fatalln(err)
}
Copier après la connexion

在这个例子中,我们添加了一个文档到名为“solr”的索引中,包含“id”、“title”、“author”和“text”四个字段。第一个字段是必需的,并且必须是唯一的。

  1. 查询数据

现在我们已经将数据添加到Solr中了。接下来,我们需要能够查询数据。我们可以使用solr.Search方法,该方法接收一个查询字符串。

query := solr.NewQuery()
query.AddParam("q", "text:search")
query.AddParam("fl", "id,title")
response, err := solr.Search(query)
if err != nil {
    log.Fatalln(err)
}
Copier après la connexion

在这个例子中,查询字符串是"text:search",它表示我们要查询“text”字段中包含单词“search”的文档。此外,我们想要返回“id”和“title”字段,所以我们指定了字段列表。

  1. 解析响应

我们已经能够从Solr中查询到数据了,接下来需要解析响应以得到我们需要的信息。

type Document struct {
    Id    string `json:"id"`
    Title string `json:"title"`
}

type Response struct {
    NumFound int       `json:"numFound"`
    Start    int       `json:"start"`
    Docs     []Document `json:"docs"`
}

var r Response
err = response.GetJson(&r)
if err != nil {
    log.Fatalln(err)
}

for _, doc := range r.Docs {
    fmt.Printf("ID: %s, Title: %s
", doc.Id, doc.Title)
}
Copier après la connexion

在这个例子中,我们创建了一个名为“Document”的类型,它包含id和title两个字段。然后我们创建一个名为“Response”的类型,它包含包含搜索结果的信息。我们调用GetJsonrrreee

Nous devons fournir l'adresse du serveur Solr, dans cet exemple, l'adresse est http:// /localhost:8983/solr/core. Si la connexion échoue, la bibliothèque renverra un objet d'erreur.
    1. Ajouter des documents

    Ensuite, nous devons ajouter nos données à l'index Solr. Dans Solr, les documents sont composés de champs, et chaque champ a un nom et une valeur.

    rrreee🎜Dans cet exemple, nous avons ajouté un document à l'index nommé "solr", contenant quatre champs : "id", "title", "author" et "text". Le premier champ est obligatoire et doit être unique. 🎜
      🎜Requête de données🎜🎜🎜Maintenant, nous avons ajouté les données à Solr. Ensuite, nous devons pouvoir interroger les données. Nous pouvons utiliser la méthode solr.Search, qui reçoit une chaîne de requête. 🎜rrreee🎜Dans cet exemple, la chaîne de requête est "text:search", ce qui signifie que nous voulons interroger les documents qui contiennent le mot "recherche" dans le champ "texte". De plus, nous souhaitons renvoyer les champs « id » et « title », nous spécifions donc une liste de champs. 🎜
        🎜Analyser la réponse🎜🎜🎜Nous avons pu interroger les données de Solr, nous devons maintenant analyser la réponse pour obtenir les informations dont nous avons besoin. 🎜rrreee🎜Dans cet exemple, nous créons un type appelé "Document", qui contient deux champs : id et title. Nous créons ensuite un type appelé « Réponse » qui contient les informations contenant les résultats de la recherche. Nous appelons la méthode GetJson pour convertir les données de réponse en un objet Response. Enfin, nous parcourons la liste des documents de la réponse et imprimons les champs d'identification et de titre de chaque document. 🎜🎜🎜Conclusion🎜🎜🎜Maintenant, nous avons utilisé avec succès Apache Solr en langage Go. Nous avons montré comment se connecter à un serveur Solr, ajouter des documents, interroger des données et analyser les réponses. Bien que cet article ne montre que certaines fonctions de Solr, il nous suffit de comprendre l'utilisation de base de Solr. Ensuite, vous pouvez continuer à explorer les fonctionnalités de Solr et étendre les capacités 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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!