Dengan perkembangan pesat maklumat, semakin sukar bagi pengguna untuk mendapatkan maklumat yang mereka perlukan dengan cepat. Dalam kes ini, menyediakan fungsi carian teks penuh telah menjadi salah satu ciri yang mesti ada untuk setiap tapak web dan aplikasi. Dalam artikel ini, kami akan memperkenalkan cara untuk melaksanakan fungsi carian teks penuh dalam aplikasi menggunakan rangka kerja Spring Boot dan pangkalan data Elasticsearch.
Apakah itu Elasticsearch?
Elasticsearch ialah enjin carian teragih sumber terbuka yang membolehkan analisis data mudah dan carian masa nyata. Ia berdasarkan pustaka enjin carian Apache Lucene dan menyediakan API RESTful yang membolehkan pembangun mengakses fungsinya dengan mudah. Hampir semua jenis data boleh disimpan dan dicari menggunakan Elasticsearch, termasuk data berstruktur, tidak berstruktur dan geospatial.
Integrasi Spring Boot dan Elasticsearch
Spring Boot ialah rangka kerja untuk membina kendiri, aplikasi Spring berasaskan pengeluaran. Ia memudahkan pembangunan aplikasi Spring melalui konfigurasi automatik dan pendekatan konvensyen-over-konfigurasi. Untuk menyepadukan dengan Elasticsearch, Spring Boot menyediakan beberapa konfigurasi lalai dan pilihan penyesuaian di luar kotak.
Pertama, kita perlu menambah kebergantungan Elasticsearch pada aplikasi Spring Boot. Tambahkan kebergantungan berikut dalam fail build.gradle:
kebergantungan {
implementation group: 'org.springframework.boot', name: 'spring-boot-starter-data-elasticsearch', version: '2.5.0'
}
Selepas menambah kebergantungan ini, kami boleh menggunakan mod Repositori Spring Data Elasticsearch dengan mudah perpustakaan Tentukan model dan indeks. Spring Data Elasticsearch memberikan kami banyak kelas dan kaedah untuk mengendalikan Elasticsearch daripada aplikasi. Kami juga perlu menetapkan konfigurasi sambungan Elasticsearch dalam fail konfigurasi aplikasi Spring Boot. Kita boleh menambah konfigurasi berikut dalam fail application.properties:
// Tetapkan alamat dan port elasticsearch
spring.data.elasticsearch.cluster-nodes=localhost:9200
// Tetapkan nama pengguna dan kata laluan elasticsearch (jika pengesahan diperlukan)
spring.data.elasticsearch.properties.username=elasticsearch
spring.data.elasticsearch.properties.password=password
Tentukan indeks dan Jenis
Sebelum menggunakan Elasticsearch untuk carian teks penuh, kita perlu mentakrifkan indeks dan jenis terlebih dahulu. Dalam Elasticsearch, indeks adalah bersamaan dengan pangkalan data, dan jenis adalah bersamaan dengan jadual dalam pangkalan data. Kami boleh menggunakan anotasi yang disediakan dalam Spring Data Elasticsearch untuk menentukan entiti dan indeks kami. Berikut ialah contoh mudah:
// Tentukan entiti
@Document(indexName = "articles")
Artikel kelas awam {
// 定义id @Id private String id; // 定义标题 @Field(type = FieldType.Text) private String title; // 定义内容 @Field(type = FieldType.Text) private String content; // 定义创建时间 @Field(type = FieldType.Date) private Date createTime; // 省略get和set方法
}
Dalam contoh di atas, kami menggunakan anotasi @Document untuk mentakrifkan entiti dan indeks kami. Kami mencipta indeks dengan indexName sebagai artikel dan menggunakan anotasi @Field untuk menganotasi medan dalam entiti kami yang perlu disimpan ke Elasticsearch. Seterusnya, kita boleh mencipta antara muka ArticleRepository, yang mewarisi daripada kelas ElasticsearchRepository. Antara muka ini boleh menyediakan sejumlah besar kaedah pertanyaan data berdasarkan Elasticsearch melalui pewarisan. Berikut ialah contoh mudah:
antara muka awam ArticleRepository memanjangkan ElasticsearchRepository42407456a0fce5117f6e0cdb707509c6 {
List<Article> findByTitle(String title);
}
Untuk antara muka ArticleRepository yang ditakrifkan dalam contoh di atas, Spring Data Elasticsearch akan secara automatik mencipta kelas entiti konkrit yang melaksanakan antara muka lapisan perkhidmatan untuk kami, dan secara automatik menyuntiknya ke dalam bekas Spring untuk kami apabila aplikasi bermula. Dalam antara muka perkhidmatan ini, kami telah menentukan kaedah findByTitle, yang digunakan untuk menanyakan artikel berdasarkan tajuknya. Dalam penggunaan sebenar, kami boleh mengendalikan Elasticsearch dengan mudah melalui ArticleRepository, termasuk menambah, memadam, bertanya, dsb.
Pelaksanaan fungsi carian teks penuh
Selepas kami menentukan entiti, indeks dan jenis, kami boleh memulakan operasi carian teks penuh pada mereka. Dalam Elasticsearch, fungsi carian teks penuh dilaksanakan dengan mencipta pertanyaan. Penyoalan ialah proses melakukan carian dalam indeks, jenis dan medan tertentu. Berikut ialah contoh mudah:
antara muka awam ArticleRepository memanjangkan ElasticsearchRepository42407456a0fce5117f6e0cdb707509c6 {
List<Article> searchArticle(String keyword);
}
Dalam contoh ini, kami mentakrifkan kaedah carianArticle untuk Mencari artikel . Dalam kaedah ini, kita boleh menggunakan pembina QueryBuilder Elasticsearch untuk membina syarat pertanyaan, seperti berikut:
Senarai awam59da28f5dfb08cc4320eedd48bbc94b6 searchArticle(String keyword) {
NativeSearchQueryBuilder builder = new NativeSearchQueryBuilder(); builder.withQuery(QueryBuilders.boolQuery() .should(QueryBuilders.matchQuery("title", keyword)) .should(QueryBuilders.matchQuery("content", keyword))); return elasticsearchTemplate.queryForList(builder.build(), Article.class);
}
Di sini , kami menggunakan NativeSearchQueryBuilder untuk membuat pertanyaan. Kita boleh menggunakan QueryBuilders untuk membina pelbagai jenis pertanyaan. Di sini, kami menggunakan pertanyaan Boolean untuk memadankan artikel yang mengandungi kata kunci dalam tajuk dan kandungannya. Selepas pertanyaan dibina, kita boleh menggunakan elasticsearchTemplate.queryForList() untuk melaksanakan pertanyaan dan mendapatkan keputusan. Sudah tentu, kami juga boleh menggunakan pelbagai kaedah pertanyaan yang disediakan oleh Spring Data Elasticsearch untuk melaksanakan operasi pertanyaan.
Ringkasan
Dalam artikel ini, kami memperkenalkan cara menggunakan Spring Boot dan Elasticsearch untuk melaksanakan fungsi carian teks penuh. Kami mula-mula memperkenalkan pengetahuan asas Elasticsearch dan kaedah penyepaduan Spring Boot dan Elasticsearch, dan kemudian menerangkan secara terperinci cara mentakrifkan indeks dan jenis, serta melaksanakan fungsi carian teks penuh. Selepas mengkaji artikel ini, kami boleh dengan mudah menyepadukan fungsi carian teks penuh ke dalam aplikasi Spring Boot kami, membolehkan pengguna mencari maklumat yang diperlukan dengan lebih cepat.
Atas ialah kandungan terperinci Laksanakan fungsi carian teks penuh menggunakan Spring Boot dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!