Rumah > Artikel > pembangunan bahagian belakang > Menggunakan Apache Solr dengan Go: Panduan Lengkap
Dengan perkembangan Internet, kami berhadapan dengan lebih banyak data. Bukan itu sahaja, kita juga perlu melombong maklumat berguna daripada data ini. Dalam konteks ini, enjin carian menjadi semakin penting kerana mereka boleh mencari maklumat yang kita perlukan melalui algoritma carian yang cekap dan tepat.
Apache Solr ialah platform carian yang dibina pada Lucene Ia menyediakan pelbagai ciri, termasuk carian teks penuh, pembahagian perkataan, penapisan, pengisihan, statistik, penyerlahan, penyiapan automatik, dll. Tidak seperti enjin carian lain, Solr menyediakan laluan carian boleh atur cara, dan pengguna boleh melanjutkan platform melalui pemalam dan pertanyaan tersuai.
Dalam artikel ini, kami akan memperkenalkan cara menggunakan Apache Solr dalam bahasa Go, daripada sambungan ke pertanyaan kepada analisis hasil, dan menganalisis penggunaan Solr secara menyeluruh.
Pertama, kita perlu menyambung ke pelayan Solr menggunakan bahasa Go. Anda boleh menggunakan perpustakaan pihak ketiga github.com/rtt/Go-Solr, yang menyediakan kaedah untuk berinteraksi dengan pelayan Solr.
Pasang perpustakaan: go 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) }
Kami perlu memberikan alamat pelayan Solr, dalam kes ini, alamatnya ialah http://localhost:8983/solr/core
. Jika sambungan gagal berjaya, perpustakaan akan mengembalikan objek ralat.
Seterusnya, kami perlu menambah data kami pada indeks Solr. Dalam Solr, dokumen terdiri daripada medan, dan setiap medan mempunyai nama dan nilai.
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) }
Dalam contoh ini, kami menambah dokumen pada indeks bernama "solr", yang mengandungi empat medan: "id", "title", "author" dan "text". Medan pertama diperlukan dan mestilah unik.
Sekarang kami telah menambahkan data pada Solr. Seterusnya, kita perlu dapat menanyakan data. Kita boleh menggunakan kaedah solr.Search
, yang menerima rentetan pertanyaan.
query := solr.NewQuery() query.AddParam("q", "text:search") query.AddParam("fl", "id,title") response, err := solr.Search(query) if err != nil { log.Fatalln(err) }
Dalam contoh ini, rentetan pertanyaan ialah "text:search"
, yang bermaksud kami ingin membuat pertanyaan untuk dokumen yang mengandungi perkataan "carian" dalam medan "teks". Selain itu, kami ingin mengembalikan medan "id" dan "tajuk", jadi kami menetapkan senarai medan.
Kami telah dapat menanyakan data daripada Solr, dan kini kami perlu menghuraikan respons untuk mendapatkan maklumat yang kami perlukan.
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) }
Dalam contoh ini, kami mencipta jenis yang dipanggil "Dokumen", yang mengandungi dua medan: id dan tajuk. Kami kemudian mencipta jenis yang dipanggil "Respons" yang mengandungi maklumat yang mengandungi hasil carian. Kami memanggil kaedah GetJson
untuk menukar data respons kepada objek Respons. Akhir sekali, kami mengulangi senarai dokumen Respons dan mencetak medan id dan tajuk setiap dokumen.
Kini, kami telah berjaya menggunakan Apache Solr dalam bahasa Go. Kami menunjukkan cara menyambung ke pelayan Solr, menambah dokumen, data pertanyaan dan menghuraikan respons. Walaupun artikel ini hanya menunjukkan beberapa fungsi Solr, ia sudah cukup untuk kita memahami penggunaan asas Solr. Seterusnya, anda boleh terus meneroka ciri Solr dan mengembangkan keupayaan carian.
Atas ialah kandungan terperinci Menggunakan Apache Solr dengan Go: Panduan Lengkap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!