SearchByKeywords 用于关键词检索,适用于带有text字段向量化配置(vectorize参数)的索引,支持多个关键词的检索。
public DataApiResponse<SearchResult> searchByKeywords(SearchByKeywordsRequest request) throws ApiClientException, VectorApiException
请求参数是 SearchByIdParam,SearchByIdParam 实例包含的参数如下表所示。
参数 | 类型 | 是否必选 | 说明 |
|---|---|---|---|
keywords | List | 是 | string。关键词列表,列表元素1-10个,元素不允许为空字符串 |
caseSensitive | Boolean | 否 | 是否大小写严格。默认false。 |
filter | Map<String, Object> | 否 | 过滤条件,详见标量过滤
|
outputFields | List | 否 | 要返回的标量字段列表.
|
limit | Integer | 否 | 检索结果数量,最大5000个。 |
offset | Integer | 否 | 偏移量。仅分页场景下使用,不建议设置过大值,否则有深分页影响。默认值为0。设置值至少为0,语义和mysql的offset相同。 |
advance | SearchAdvance | 否 | 高级参数,详见检索公共参数 |
属性 | 类型 | 说明 |
|---|---|---|
data | List | 见下 |
filterMatchedCount | Integer | 筛选匹配数量 |
totalReturnCount | Integer | 返回数量 |
realTextQuery | String | |
tokenUsage | Object | 使用token |
属性 | 类型 | 说明 |
|---|---|---|
id | Object | 主键 id。 |
fields | Map<String, Object> | 请求返回中的 fields 字段 |
score | Float | 相似度 |
annScore | Float | ann得分 |
package org.example.newsubproduct.data.search; import com.volcengine.vikingdb.runtime.core.ClientConfig; import com.volcengine.vikingdb.runtime.core.auth.AuthWithAkSk; import com.volcengine.vikingdb.runtime.enums.Scheme; import com.volcengine.vikingdb.runtime.exception.VectorApiException; import com.volcengine.vikingdb.runtime.vector.model.request.*; import com.volcengine.vikingdb.runtime.vector.model.response.*; import com.volcengine.vikingdb.runtime.vector.service.VectorService; import java.util.Arrays; public class SearchByKeywords { public static void main(String[] args) { VectorService vectorService = null; try { vectorService = new VectorService( Scheme.HTTPS, "api-vikingdb.vikingdb.cn-beijing.volces.com", // 填写向量库数据面v2的域名 https://www.volcengine.com/docs/84313/1792715 "cn-beijing", new AuthWithAkSk(System.getenv("AK"), System.getenv("SK")), ClientConfig.builder().build() ); } catch (Exception e) { System.err.println("Client initialization failed: " + e.getMessage()); e.printStackTrace(); return; } SearchByKeywordsRequest request = SearchByKeywordsRequest.builder() .collectionName("your_collection_name") // 替换为您的集合名称 .indexName("your_index_name") // 替换为您的索引名称 .keywords(Arrays.asList("keyword1", "keyword2")) .limit(10) .build(); try { DataApiResponse<SearchResult> response = vectorService.searchByKeywords(request); System.out.println("request success:"); System.out.println(response); } catch (VectorApiException vectorApiException) { System.err.println("request vectorApiException:"); System.out.println("apiName: " + vectorApiException.getApiName()); System.out.println("httpStatusCode: " + vectorApiException.getHttpStatusCode()); System.out.println("code: " + vectorApiException.getCode()); System.out.println("message: " + vectorApiException.getMessage()); System.out.println("requestId: " + vectorApiException.getRequestId()); System.out.println("responseContext: " + vectorApiException.getResponseContext().getBody()); } catch (Exception e) { System.err.println("request exception, message : " + e.getMessage()); e.printStackTrace(); } } }