标准搜索API - GenericSearch

更新时间:

本文介绍通过阿里云OpenAPI SDK调用通用搜索标准接口的方法以及参数说明

接口调用

请求结构体

参数

类型

是否可空

说明

约束

query

String

不可空

搜索问题

长度:>=2 and <=100

sessionId

String

可空

多轮交互的sessionId

长度:<=128

timeRange

String

可空

查询的时间范围

支持可选值:

  • OneDay:1天内

  • OneWeek:1周内

  • OneMonth:1月内

  • OneYear:1年内

  • NoLimit:无限制(默认值)

industry

String

可空

行业搜索,指定后只返回行业站点的检索结果,多个行业使用逗号分隔

支持可选值:

  • finance:金融

  • law:法律

page

int32

可空

页码,默认值:1;

安装SDK

Java SDK

前提条件

已安装Java8或以上版本。

Maven依赖

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>iqs20241111</artifactId>
    <version>1.1.0</version>
</dependency>

调用代码

package com.aliyun.iqs.example;

import com.alibaba.fastjson.JSON;
import com.aliyun.iqs20241111.Client;
import com.aliyun.iqs20241111.models.GenericSearchRequest;
import com.aliyun.iqs20241111.models.GenericSearchResponse;
import com.aliyun.iqs20241111.models.GenericSearchResult;
import com.aliyun.tea.TeaException;
import com.aliyun.teaopenapi.models.Config;


public class GenericSearchMain {

    public static void main(String[] args) throws Exception {
        Client client = initClient();
        invoke(client,"杭州美食", "NoLimit");
    }

    private static Client initClient() throws Exception {
        // TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
        String accessKeyId = System.getenv("ACCESS_KEY");
        String accessKeySecret = System.getenv("ACCESS_SECRET");
        Config config = new Config()
                .setAccessKeyId(accessKeyId)
                .setAccessKeySecret(accessKeySecret);
        config.setEndpoint("iqs.cn-zhangjiakou.aliyuncs.com");
        return new Client(config);
    }

    private static void invoke(Client client, String query, String timeRange)  {
        GenericSearchRequest request = new GenericSearchRequest();
        request.setQuery(query);
        request.setTimeRange(timeRange);
        try {
            GenericSearchResponse response = client.genericSearch(request);
            GenericSearchResult result = response.getBody();
            System.out.println(JSON.toJSONString(result));
        } catch (TeaException e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }catch (Exception e) {
            e.printStackTrace();
            System.out.println(e.getMessage());
        }
    }
}

Python SDK

前提条件

您需要确保已安装Python3.8或以上版本。

安装SDK

pip3 install alibabacloud_iqs20241111==1.1.0

调用代码

import os

from alibabacloud_iqs20241111 import models
from alibabacloud_iqs20241111.client import Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_sse.exceptions import TeaException


class Sample:
    def __init__(self):
        pass

    @staticmethod
    def create_client() -> Client:
        config = open_api_models.Config(
            # TODO: 使用您的AK/SK进行替换(建议通过环境变量加载)
            access_key_id=os.environ.get('ACCESS_KEY'),
            access_key_secret=os.environ.get('ACCESS_SECRET')
        )
        config.endpoint = f'iqs.cn-zhangjiakou.aliyuncs.com'
        return Client(config)

    @staticmethod
    def main() -> None:
        client = Sample.create_client()
        run_instances_request = models.GenericSearchRequest(
            query='杭州美食',
            time_range="NoLimit"
        )
        try:
            response = client.generic_search(run_instances_request)
            print(f"api success, requestId:{response.body.request_id}, size :{len(response.body.page_items)}")
        except TeaException as e:
            code = e.code
            request_id = e.data.get("RequestId")
            message = e.data.get("Message")
            print(f"api exception, requestId:{request_id}, code:{code}, message:{message}")

if __name__ == '__main__':
    Sample.main()

Go SDK

前提条件

  • Go 环境版本必须不低于 1.10.x

安装SDK

require (
  github.com/alibabacloud-go/iqs-20241111 v1.1.0
  github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.10
)

调用代码

package main

import (
	"fmt"
	"log"
	"os"

	openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
	iqs20241111 "github.com/alibabacloud-go/iqs-20241111/client"
	util "github.com/alibabacloud-go/tea-utils/v2/service"
	"github.com/alibabacloud-go/tea/tea"
)

const endpointURL = "iqs.cn-zhangjiakou.aliyuncs.com"

func createClient() (*iqs20241111.Client, error) {
	accessKeyID := os.Getenv("ACCESS_KEY")
	accessKeySecret := os.Getenv("ACCESS_SECRET")

	if accessKeyID == "" || accessKeySecret == "" {
		return nil, fmt.Errorf("ACCESS_KEY or ACCESS_SECRET environment variable is not set")
	}

	config := &openapi.Config{
		AccessKeyId:     tea.String(accessKeyID),
		AccessKeySecret: tea.String(accessKeySecret),
		Endpoint:        tea.String(endpointURL),
	}

	return iqs20241111.NewClient(config)
}

func runGenericSearch(client *iqs20241111.Client) error {
	request := &iqs20241111.GenericSearchRequest{
		Query:     tea.String("杭州美食"),
		TimeRange: tea.String("NoLimit"),
	}
	runtime := &util.RuntimeOptions{}

	resp, err := client.GenericSearchWithOptions(request, nil, runtime)
	if err != nil {
		return fmt.Errorf("generic search failed: %w", err)
	}

	fmt.Printf("[%s] response: %s\n", *resp.Body.RequestId, resp.Body)
	return nil
}

func main() {
	client, err := createClient()
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}

	if err := runGenericSearch(client); err != nil {
		log.Fatalf("Error running generic search: %v", err)
	}
}

C++ SDK

前提条件

1.需要支持C++ 11环境:Windows: Visual Studio 2015或以上版本。Linux: GCC 4.9或以上版本

2.CMake 3.0以上版本

安装

1.下载核心类库代码:git clone https://github.com/aliyun/aliyun-openapi-cpp-sdk.git

2.安装相关依赖,参照https://github.com/aliyun/aliyun-openapi-cpp-sdk/blob/master/README-CN.md

3.对核心依赖库进行编译:sudo sh easyinstall.sh core

调用代码

#include <cstdlib>
#include <iostream>
#include <string>
#include <alibabacloud/core/AlibabaCloud.h>
#include <alibabacloud/core/CommonRequest.h>
#include <alibabacloud/core/CommonClient.h>
#include <alibabacloud/core/CommonResponse.h>

using namespace std;
using namespace AlibabaCloud;

int main(int argc, char** argv)
{
    AlibabaCloud::ClientConfiguration configuration("cn-zhangjiakou");
    // specify timeout when create client.
    configuration.setConnectTimeout(10000);
    configuration.setReadTimeout(10000);
    AlibabaCloud::Credentials credential("your ak", "your sk" );

    AlibabaCloud::CommonClient client(credential, configuration);
    AlibabaCloud::CommonRequest request(AlibabaCloud::CommonRequest::RequestPattern::RoaPattern);
    request.setHttpMethod(AlibabaCloud::HttpRequest::Method::Get);
    request.setDomain("iqs.cn-zhangjiakou.aliyuncs.com");
    request.setVersion("2024-11-11");
    request.setQueryParameter("query", "黑神话");
    request.setQueryParameter("timeRange", "NoLimit");
    request.setResourcePath("/linked-retrieval/linked-retrieval-entry/v2/linkedRetrieval/commands/genericSearch");
    request.setRequestPattern(AlibabaCloud::CommonRequest::RequestPattern::RoaPattern);

    request.setHeaderParameter("Content-Type", "application/json");
    auto response = client.commonResponse(request);
    if (response.isSuccess()) {
        printf("request success.\n");
        printf("result: %s\n", response.result().payload().c_str());
    }
    else {
        printf("error: %s\n", response.error().detail().c_str());
    }
    AlibabaCloud::ShutdownSdk();
    return 0;
}

返回结构体

字段

字段类型

是否可空

字段说明

样例

requestId

string

不可空

请求RequestId, 排查问题时可以提供此信息

pageItems[]

cardType

string

不可空

卡片类型,目前支持

  • structure_web_info,标准网页结构;占召回结果的90%以上

  • baike_sc/baike,百科

  • news_uchq,UC新闻

  • wenda_selected,问答

structure_web_info

title

string

可空

网站标题

2024五一劳动节放假调休时间表(附放假日历)

htmlTitle

string

不可空

网站标题,html内容

<em>2024五一</em>劳动节<em>放假</em>调休<em>时间表</em>(附放假日历)-本地宝

link

string

不可空

网站地址

http://m.sh.bendibao.com/tour/278811.html

displayLink

string

不可空

可读的网站地址

m.sh.bendibao.com

htmlSnippet

string

不可空

网页动态摘要,匹配到关键字的部分内容,最长250字符

说明

此字段可以作为RAG场景的召回context,如果需要更全的网站正文,可以使用mainText

<em>2024五一</em>劳动节<em>放假安排</em>:5月1日至5日<em>放假</em>调休,共5天。4月28日(星期日)、5月11日(星期六)上班。

publishTime

int64

不可空

发布时间,单位(毫秒),对于部分没有发布时间的网站会使用默认值:0

1714123620000

score

double

不可空

相关度分数

mainText

string

可空

网页正文,默认正文前500字符,如需长正文(前3000字符)请联系您的阿里云客户经理进行开通。

重要

此字段只有在cardType=structure_web_info时存在。其他卡片场景为空

导语\t\t \t\t2024\t五一\t劳动\t节\t放假\t安排\t:\t5\t月\t1\t日\t至\t5\t日\t放假\t调休\t,\t共\t5\t天\t。\t4\t月\t28\t日\t(\t星期\t日\t)\t、\t5\t月\t11\t日\t(\t星期\t六\t)\t上班\t。\t\t\n\t\t2024\t五一\t劳动\t节\t放假\t安排\t\t\n\t\t5\t月\t1\t日\t至\t5\t日\t放假\t调休\t,\t共\t5\t天\t。\t4\t月\t28\t日\t(\t星期\t日\t)\t、\t5\t月\t11\t日\t(\t星期\t六\t)\t上班\t。\t\t\n\t\t第\t一\t天

images[]

imageLink

string

可空

图片地址

https://imgbdb4.bendibao.com/shbdb/news/202310/26/20231026112304_25716.jpg

width

int32

可空

宽度:像素

864

height

int32

可空

高度:像素

1704

pageMap

htmlSnippetTruncate

string

可空

网页动态摘要是否被截断,超出长度时会被截断

  • 0:未截断

  • 1:截断

0

mainTextTruncate

string

可空

网页正文是否被截断,超出长度时会被截断

  • 0:未截断

  • 1:截断

1

weiboItems[]

可空

cardType

string

不可空

卡片类型,固定为weibo_strong;

query能够匹配到微博场景才会返回微博数据

weibo_strong

username

string

不可空

微博用户名

白鹿科技

link

string

不可空

搜索结果微博地址

https://m.weibo.cn/detail/5024099350350075?wm=90194_90009

htmlSnippet

string

不可空

微博内容

【小调查:你会买<em>小米SU7</em>吗?】#小米SU7路测覆盖300多城市#4月17日,@小米汽车 发文称SU7道路测试覆盖全国300多个城市,涵盖极寒,极热天气,总里程数高达540万公里,目前仍在进行中。 网页链接

publishDisplayTime

string

可空

发布时间

1小时前

images[]

string

可空

微博的附带图片

searchInformation

total

int64

不可空

总条数

8230595

searchTime

int64

不可空

搜索耗时

1441

错误码

接口错误码

Status

错误码

错误信息

404

InvalidAccessKeyId.NotFound

Specified access key is not found.

403

Retrieval.NotActivate

Please activate AI search service

403

Retrieval.Arrears

Please recharge first.

403

Retrieval.NotAuthorised

Please authorize the AliyunImarketingFullAccess to the sub-account

403

Retrieval.TestUserPeriodExpired

The test period has expired.

429

Retrieval.Throttling.User

Request was denied due to user flow control.

429

Retrieval.TestUserQueryPerDayExceeded

The query per day exceed the limit.