全部产品
Search
文档中心

Object Storage Service:Pencarian vektor (Java SDK V1)

更新时间:Nov 26, 2025

Pencarian vektor OSS memungkinkan Anda menemukan file objek secara cepat dari kumpulan objek yang besar berdasarkan konten semantik, metadata OSS, metadata multimedia, ETag objek, tag, dan metadata kustom. Fitur ini meningkatkan efisiensi pengambilan.

Catatan

  • Hanya versi kit pengembangan perangkat lunak (SDK) Java 3.18.2 dan yang lebih baru yang mendukung fitur pencarian vektor.

  • Fitur pencarian vektor didukung untuk bucket di wilayah berikut: Tiongkok (Qingdao), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Shenzhen), Tiongkok (Guangzhou), Tiongkok (Chengdu), Tiongkok (Hong Kong), Singapura, Indonesia (Jakarta), Jerman (Frankfurt), AS (Virginia), dan AS (Silicon Valley).

  • Topik ini menggunakan titik akhir publik wilayah Tiongkok (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk detail tentang wilayah dan titik akhir yang didukung, lihat Wilayah dan titik akhir.

  • Topik ini memperoleh kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.

  • Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Contoh konfigurasi untuk skenario umum.

  • Secara default, Akun Alibaba Cloud memiliki izin yang diperlukan untuk melakukan operasi pengindeksan data. Jika Anda ingin menggunakan pengguna Resource Access Management (RAM) atau STS untuk melakukan operasi pengindeksan data, Anda harus memiliki izin berikut:

    • Untuk mengaktifkan fitur manajemen metadata, Anda harus memiliki izin oss:OpenMetaQuery.

    • Untuk mengambil informasi tentang indeks metadata, Anda harus memiliki izin oss:GetMetaQueryStatus.

    • Untuk melakukan kueri objek yang memenuhi kondisi tertentu, Anda harus memiliki izin oss:DoMetaQuery.

    • Untuk menonaktifkan fitur manajemen metadata, Anda harus memiliki izin oss:CloseMetaQuery.

Kode contoh

Aktifkan fitur pencarian vektor

Kode berikut menunjukkan cara mengaktifkan fitur pencarian vektor untuk bucket tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.MetaQueryMode;

public class OpenMetaQuery {
    public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
        // Titik akhir diatur ke Tiongkok (Hangzhou) pada contoh ini. Ganti dengan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Aktifkan fitur pencarian vektor.
            ossClient.openMetaQuery(bucketName, MetaQueryMode.SEMANTIC);
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // Matikan OSSClient.
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Dapatkan informasi tentang indeks metadata

Kode berikut menunjukkan cara mengambil informasi tentang indeks metadata bucket tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GetMetaQueryStatusResult;

public class GetMetaQueryStatus {
    public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {
        // Titik akhir diatur ke Tiongkok (Hangzhou) pada contoh ini. Ganti dengan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Dapatkan informasi tentang indeks metadata bucket yang ditentukan.
            GetMetaQueryStatusResult getResult = ossClient.getMetaQueryStatus(bucketName);
             // Dapatkan pola pengambilan saat ini.
            System.out.println(getResult.getMetaQueryMode().toString());
            // Dapatkan jenis pemindaian saat ini.
            System.out.println(getResult.getPhase());
            // Dapatkan status indeks metadata.
            System.out.println(getResult.getState());
            // Dapatkan waktu saat indeks metadata dibuat.
            System.out.println(getResult.getCreateTime());
            // Dapatkan waktu saat indeks metadata terakhir diperbarui.
            System.out.println(getResult.getUpdateTime());
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // Matikan OSSClient.
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Lakukan kueri untuk objek yang memenuhi kondisi tertentu

Kode berikut menunjukkan cara menggunakan fitur pencarian vektor untuk melakukan kueri objek yang sesuai dengan konten semantik tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.CredentialsProviderFactory;
import com.aliyun.oss.common.auth.EnvironmentVariableCredentialsProvider;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.util.ArrayList;
import java.util.List;

public class DoMetaQuery {
    public static void main(String[] args) throws Exception {
        // Titik akhir diatur ke Tiongkok (Hangzhou) pada contoh ini. Ganti dengan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            int maxResults = 20;
            List<String> mediaTypes = new ArrayList<String>();
            mediaTypes.add("image");
            String query = "Snow";
            String simpleQuery = "{\"Operation\":\"gt\", \"Field\": \"Size\", \"Value\": \"30\"}";
            String sort = "Size";
            DoMetaQueryRequest doMetaQueryRequest = new DoMetaQueryRequest(bucketName, maxResults, query, sort, MetaQueryMode.SEMANTIC, mediaTypes, simpleQuery);
            DoMetaQueryResult doMetaQueryResult = ossClient.doMetaQuery(doMetaQueryRequest);
        } catch (OSSException oe) {
            System.out.println("Error Message: " + oe.getErrorMessage());
            System.out.println("Error Code:       " + oe.getErrorCode());
            System.out.println("Request ID:      " + oe.getRequestId());
            System.out.println("Host ID:           " + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Nonaktifkan fitur pencarian vektor

Kode berikut menunjukkan cara menonaktifkan fitur pencarian vektor untuk bucket tertentu.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;

public class CloseMetaQuery {
    public static void main(String[] args) throws Exception {
        // Titik akhir diatur ke Tiongkok (Hangzhou) pada contoh ini. Ganti dengan titik akhir yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan wilayah tempat bucket berada. Contoh ini menggunakan cn-hangzhou, yang menunjukkan wilayah Tiongkok (Hangzhou).
        String region = "cn-hangzhou";

        // Buat instans OSSClient.
        // Saat instans OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber dayanya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            // Nonaktifkan fitur pencarian vektor untuk bucket.
            ossClient.closeMetaQuery(bucketName);
        } catch (OSSException oe) {
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Error Message: " + ce.getMessage());
        } finally {
            // Matikan OSSClient.
            if(ossClient != null){
                ossClient.shutdown();
            }
        }
    }
}

Referensi

  • Untuk informasi selengkapnya tentang operasi API untuk mengaktifkan fitur manajemen metadata, lihat OpenMetaQuery.

  • Untuk informasi selengkapnya tentang operasi API untuk mengambil informasi tentang indeks metadata, lihat GetMetaQueryStatus.

  • Untuk informasi selengkapnya tentang operasi API untuk melakukan kueri objek yang memenuhi kondisi tertentu, lihat DoMetaQuery.

  • Untuk informasi selengkapnya tentang operasi API untuk menonaktifkan fitur manajemen metadata, lihat CloseMetaQuery.