Rumah  >  Artikel  >  Java  >  Cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch

Cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch

WBOY
WBOYasal
2023-09-21 13:33:11935semak imbas

Cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch

Cara menggunakan Java untuk membangunkan aplikasi perolehan teks penuh berdasarkan Elasticsearch

Pendapatan semula teks penuh adalah teknologi yang sangat penting pada masa kini zaman maklumat. Ia boleh mencari kata kunci atau maklumat berkaitan dengan cepat dan tepat yang diperlukan oleh pengguna daripada sejumlah besar data teks. Sebagai enjin carian teragih sumber terbuka, Elasticsearch telah digunakan secara meluas untuk keupayaan mendapatkan teks penuh yang cekap, analisis data masa nyata dan kebolehskalaan. Artikel ini akan memperkenalkan cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch, dan memberikan contoh kod khusus.

  1. Kerja penyediaan
    Sebelum memulakan pembangunan, kita perlu menyediakan kerja berikut:
  2. Pasang Java development environment (JDK)
  3. # 🎜 🎜#Pasang pelayan Elasticsearch dan mulakan perkhidmatan
  4. Import perpustakaan klien Java Elasticsearch, sebagai contoh, gunakan Maven untuk mengimport kebergantungan berikut:
  5. <dependencies>
      <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>7.10.0</version>
      </dependency>
    </dependencies>
    #🎜🎜 #🎜🎜 #Buat Pelanggan Elasticsearch
Pertama, kita perlu mencipta pelanggan untuk menyambung ke pelayan Elasticsearch. Anda boleh mencipta instance klien menggunakan kod berikut:
  1. import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestClientBuilder;
    import org.elasticsearch.client.RestHighLevelClient;
    
    public class ElasticsearchClient {
        public static RestHighLevelClient createClient() {
            // 配置Elasticsearch服务器地址
            RestClientBuilder builder = RestClient.builder(new HttpHost("localhost", 9200, "http"));
            // 创建高级客户端实例
            RestHighLevelClient client = new RestHighLevelClient(builder);
            return client;
        }
    }

  2. Create Index
Seterusnya, kami perlu mencipta indeks (Indeks) untuk menyimpan data dokumen kami . Indeks adalah serupa dengan jadual dalam pangkalan data, dan kami boleh menyimpan pelbagai jenis data dokumen dalam indeks yang berbeza. Indeks boleh dibuat menggunakan kod berikut:
  1. import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
    import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    import org.elasticsearch.common.xcontent.XContentBuilder;
    import org.elasticsearch.common.xcontent.XContentFactory;
    import org.elasticsearch.common.xcontent.XContentFactory.*;
    
    public class IndexCreator {
        public static void createIndex(String indexName) {
            try {
                RestHighLevelClient client = ElasticsearchClient.createClient();
                
                // 创建索引请求
                CreateIndexRequest request = new CreateIndexRequest(indexName);
                
                // 设置索引的映射规则
                XContentBuilder mappingBuilder = XContentFactory.jsonBuilder();
                mappingBuilder.startObject();
                mappingBuilder.startObject("properties");
                mappingBuilder.startObject("title");
                mappingBuilder.field("type", "text");
                mappingBuilder.endObject();
                mappingBuilder.startObject("content");
                mappingBuilder.field("type", "text");
                mappingBuilder.endObject();
                mappingBuilder.endObject();
                mappingBuilder.endObject();
                
                request.mapping(mappingBuilder);
                
                // 执行创建索引请求
                CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
                
                // 处理响应结果
                if (response.isAcknowledged()) {
                    System.out.println("索引创建成功:" + indexName);
                } else {
                    System.out.println("索引创建失败:" + indexName);
                }
                
                // 关闭客户端连接
                client.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

  2. Dokumen Indeks
Dengan indeks tersedia, kami boleh menyimpan data dokumen ke dalam indeks. Dokumen adalah serupa dengan rekod dalam pangkalan data Kita boleh menyimpan berbilang dokumen di bawah indeks yang sama. Anda boleh menggunakan kod berikut untuk menyimpan data dokumen dalam indeks:
  1. import org.elasticsearch.action.index.IndexRequest;
    import org.elasticsearch.action.index.IndexResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.common.xcontent.XContentType;
    
    public class DocumentIndexer {
        public static void indexDocument(String indexName, String documentId, String title, String content) {
            try {
                RestHighLevelClient client = ElasticsearchClient.createClient();
                
                // 创建文档索引请求
                IndexRequest request = new IndexRequest(indexName);
                request.id(documentId);
                request.source("title", title);
                request.source("content", content);
                
                // 执行文档索引请求
                IndexResponse response = client.index(request, RequestOptions.DEFAULT);
                
                // 处理响应结果
                if (response.status().getStatus() == 201) {
                    System.out.println("文档索引成功:" + documentId);
                } else {
                    System.out.println("文档索引失败:" + documentId);
                }
                
                // 关闭客户端连接
                client.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

  2. Cari dokumen
Dengan indeks dokumen, kita boleh mencari melalui teks penuh cari Dokumen yang mengandungi kata kunci. Anda boleh menggunakan kod berikut untuk melakukan carian dokumen:
  1. import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.index.query.QueryBuilders.*;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    
    public class DocumentSearcher {
        public static void searchDocument(String indexName, String keyword) {
            try {
                RestHighLevelClient client = ElasticsearchClient.createClient();
                
                // 创建搜索请求
                SearchRequest request = new SearchRequest(indexName);
                SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
                sourceBuilder.query(QueryBuilders.matchQuery("content", keyword));
                request.source(sourceBuilder);
                
                // 执行搜索请求
                SearchResponse response = client.search(request, RequestOptions.DEFAULT);
                
                // 处理响应结果
                if (response.getHits().getTotalHits().value > 0) {
                    System.out.println("搜索结果:");
                    for (SearchHit hit : response.getHits().getHits()) {
                        System.out.println(hit.getSourceAsString());
                    }
                } else {
                    System.out.println("未找到相关文档");
                }
                
                // 关闭客户端连接
                client.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    Menggunakan contoh kod di atas, kami boleh melengkapkan pembangunan aplikasi mendapatkan teks penuh berdasarkan Elasticsearch. Dengan mencipta indeks, mengindeks dokumen dan mencari dokumen, kami boleh mencapai perolehan teks penuh yang cekap dan tepat. Sudah tentu, sebagai tambahan kepada fungsi asas yang ditunjukkan di atas, Elasticsearch juga menyokong pelbagai pertanyaan lanjutan, analisis agregat, penggunaan teragih dan ciri-ciri lain, dan boleh dikembangkan dan dikembangkan lagi mengikut keperluan khusus. Saya harap artikel ini membantu anda, dan saya berharap anda berjaya dalam bidang mendapatkan teks penuh!

Atas ialah kandungan terperinci Cara menggunakan Java untuk membangunkan aplikasi carian teks penuh berdasarkan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn