全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
开放搜索

搜索操作

更新时间:2017-06-07 13:26:11

构造函数

请求参数

参数名称 类型 描述
client CloudsearchClient 此对象由CloudsearchClient类实例化。

函数定义

function __construct($client)

使用示例

$search_obj = new CloudsearchSearch($client);

设置scroll扫描起始id

请求参数

参数名称 类型 描述
scrollId string 扫描起始id

函数定义

function setScrollId($scrollId)

获取scroll扫描起始id

返回结果

类型 描述
string 扫描起始id

函数定义

function getScrollId()

请求scroll api。

类似search接口,但是不支持sort, aggregate, distinct, formula_name, summary及qp, start 等功能。

scroll实现方式:

第一次正常带有指定的子句和参数调用scroll接口,此接口会返回scroll_id信息。

第二次请求时只带此scroll_id信息和scroll参数即可。

类似第一次请求:

$search = new CloudsearchSearch($client);

$search->addIndex("juhuasuan");

$search->setQueryString("default:'酒店'");

$search->setFormat('json');

$search->setHits(10);

$search->setScroll("1m");

$result = $search->scroll();

$array = json_decode($result, true);

$scrollId = $array['result']['scroll_id'];

第二次请求:

$search = new CloudsearchSearch($client);

$search->setScroll("1m");

$search->setScrollId($scrollId);

$result = $search->scroll();

请求参数

参数名称 类型 描述
opts array 扫描请求所需参数

返回结果

类型 描述
string 扫描结果

函数定义

function scroll($opts = array())

执行搜索

执行向API提出搜索请求。 更多说明请参见 API 配置config子句

请求参数

参数名称 类型 描述
opts array 此参数如果被复制,则会把此参数的内容分别赋给相应的变量。此参数的值可能有以下内容:
opts: 此参数如果被复制,则会把此参数的内容分别赋给相应的变量。此参数的值可能有以下内容:
参数名称 参数类型 参数描述
query string 指定的搜索查询串,可以为query=>"索引名:'鲜花'"。
indexes array 指定的搜索应用,可以为一个应用,也可以多个应用查询。
fetch_field array 设定返回的字段列表,如果只返回url和title,则为 array('url', 'title')。
format string 指定返回的数据格式,有json,xml和protobuf三种格式可选。默认值为:'xml'
formula_name string 指定的表达式名称,此名称需在网站中设定。
summary array 指定summary字段一些标红、省略、截断等规则。
start int 指定搜索结果集的偏移量。默认为0。
hits int 指定返回结果集的数量。默认为20。
sort array 指定排序规则。默认值为:'self::SORT_DECREASE' (降序)
filter string 指定通过某些条件过滤结果集。
aggregate array 指定统计类的信息。
distinct array 指定distinct排序。
kvpair string 指定的kvpair。

返回结果

类型 描述
string 返回搜索结果

函数定义

function search($opts = array())

使用示例

$result = $search_obj->search();

增加新的应用来进行检索

请求参数

参数名称 类型 描述
indexName string\array 应用名称或应用名称列表.

函数定义

function addIndex($indexName)

使用示例

$search_obj->addIndex("my_app_1");
$search_obj->addIndex("my_app_2");
$search_obj->addIndex("my_app_3");

删除待搜索的应用

在当前检索中删除此应用的检索结果。

请求参数

参数名称 类型 描述
indexName string 待删除的应用名称

函数定义

function removeIndex($indexName)

使用示例

$search_obj->removeIndex("my_app_3");

获得请求应用列表

当前请求中所有的应用名列表。

返回结果

类型 描述
array 返回当前搜索的所有应用列表。

函数定义

function getSearchIndexes()

使用示例

$result = $search_obj->getSearchIndexes();

设置表达式名称

此表达式名称和结构需要在网站中已经设定。

请求参数

参数名称 类型 描述
formulaName string 表达式名称。

函数定义

function setFormulaName($formulaName)

使用示例

// 例如我们在控制台已经设定了一个名称为my_formula_name的排序表达式。
$search_obj->setFormulaName("my_formula_name");

获取表达式名称

获得当前请求中设置的表达式名称。

返回结果

类型 描述
string 返回当前设定的表达式名称。

函数定义

function getFormulaName()

使用示例

$result = $search_obj->getFormulaName();

清空精排表达式名称设置

函数定义

function clearFormulaName()

使用示例

$search_obj->clearFormulaName();

设置粗排表达式名称

此表达式名称和结构需要在网站中已经设定。

请求参数

参数名称 类型 描述
FormulaName string 表达式名称。

函数定义

function setFirstFormulaName($formulaName)

使用示例

// 例如我们在控制台已经设定了一个名称为my_first_formula_name的排序表达式。
$search_obj->setFirstFormulaName("my_first_formula_name");

获取粗排表达式设置

获取当前设置的粗排表达式名称。

返回结果

类型 描述
string 返回当前设定的表达式名称。

函数定义

function getFirstFormulaName()

使用示例

$result = $search_obj->getFirstFormulaName();

清空粗排表达式名称设置

函数定义

function clearFirstFormulaName()

使用示例

$search_obj->clearFirstFormulaName();

添加一条summary信息

请求参数

参数名称 类型 描述
fieldName string 指定的生效的字段。此字段必需为可分词的text类型的字段。
len string 指定结果集返回的词字段的字节长度,一个汉字为2个字节。
element string 指定命中的query的标红标签,可以为em等。
ellipsis string 指定用什么符号来标注未展示完的数据,例如“...”。
snipped string 指定query命中几段summary内容。
elementPrefix string 如果指定了此参数,则标红的开始标签以此为准。
elementPostfix string 如果指定了此参数,则标红的结束标签以此为准。

函数定义

function addSummary($fieldName, $len = 0, $element = '',$ellipsis = '', $snipped = 0, $elementPrefix = '', $elementPostfix = '')

使用示例

//title返回的字数长度为50,飘红用"<em></em>",截取长度后用"..."来结束,返回的结果在一个片段(片段的概念就是返回结果在一段落中还是几段落中)中
$search_obj->addSummary('title',50,'em','...', 1, $elementPrefix = '', $elementPostfix = '');
//title返回的字数长度为250,飘红用"<em></em>",截取长度后用"..."来结束,返回的结果在2个片段中
$search_obj->addSummary("body", 250, "em", "...", 2);

获取当前的summary信息

可以通过指定字段名称返回指定字段的summary信息

请求参数

参数名称 类型 描述
field string 指定的字段,如果此字段为空,则返回整个summary信息,否则返回指定field的summary信息。

返回结果

类型 描述
array 返回summary信息。

函数定义

function getSummary($field = '')

使用示例

$result = $search_obj->getSummary('title');

获取summary字符串

把summary信息生成字符串并返回。

返回结果

类型 描述
string 返回字符串的summary信息。

函数定义

function getSummaryString()

使用示例

$result = $search_obj->getSummaryString();

设置返回的数据格式

请求参数

参数名称 类型 描述
format string 数据格式名称,有xml, json和protobuf 三种类型。

函数定义

function setFormat($format)

使用示例

$search_obj->setFormat("json");

获取当前的数据格式名称

返回结果

类型 描述
string 返回当前的数据格式名称。

函数定义

function getFormat()

使用示例

$result = $search_obj->getFormat();

设置返回结果的offset偏移量

请求参数

参数名称 类型 描述
start int 偏移量。

函数定义

function setStartHit($start)

使用示例

$search_obj->setStartHit(100);

获取返回结果的offset偏移量

返回结果

类型 描述
int 返回当前设定的偏移量。

函数定义

function getStartHit()

使用示例

$result = $search_obj->getStartHit();

设置结果集大小

设置当前返回结果集的doc个数。

请求参数

参数名称 类型 描述
hits number 指定的doc个数。默认值:20

函数定义

function setHits($hits = 20)

使用示例

//每页获取25条记录
$search_obj->setHits(25);

获取结果集大小

获取当前设定的结果集的doc数。

返回结果

类型 描述
number 返回当前指定的doc个数。

函数定义

function getHits()

使用示例

$result = $search_obj->getHits();

添加排序设置

增加一个排序字段及排序方式。 更多说明请参见API 排序sort子句

请求参数

参数名称 类型 描述
field string 字段名称。
sortChar string 排序方式,有升序+和降序-两种方式。

函数定义

function addSort($field, $sortChar = self::SORT_DECREASE)

使用示例

//按创建时间倒序获取搜索结果
$result = $search_obj->addSort("create_timestamp", '-');

删除指定字段的排序

请求参数

参数名称 类型 描述
field string 指定的字段名称。

函数定义

function removeSort($field)

使用示例

$result = $search_obj->removeSort("create_timestamp");

获取排序信息

请求参数

参数名称 类型 描述
sortKey string 如果此字段为空,则返回所有排序信息,否则只返回指定字段的排序值。

返回结果

类型 描述
string\array 返回排序值。

函数定义

function getSort($sortKey = '')

使用示例

$result = $search_obj->getSort();

获取排序字符串

把排序信息生成字符串并返回。

返回结果

类型 描述
string 返回字符串类型的排序规则。

函数定义

function getSortString()

使用示例

$result = $search_obj->getSortString();

添加过滤规则

针对指定的字段添加过滤规则。 更多说明请参见 API 过滤filter子句

请求参数

参数名称 类型 描述
filter string 过滤规则,例如fieldName>=1。
operator string 操作符,可以为 AND OR。默认值为:'AND'

函数定义

function addFilter($filter, $operator = 'AND')

使用示例

//cat_id 必需为可过滤或者可聚合属性
$search_obj->addFilter("cat_id=1");

获取过滤规则

返回结果

类型 描述
filter 返回字符串类型的过滤规则。

函数定义

function getFilter()

使用示例

$result = $search_obj->getFilter();

添加统计信息相关参数

一个关键词通常能命中数以万计的文档,用户不太可能浏览所有文档来获取信息。而用户感兴趣的可 能是一些统计类的信息,比如,查询“手机”这个关键词,想知道每个卖家所有商品中的最高价格。

则可以按照卖家的user_id分组,统计每个小组中最大的price值:

groupKey:user_id, aggFun: max(price)

更多说明请参见 APi aggregate子句说明

请求参数

参数名称 类型 描述
groupKey string 指定的group key.
aggFun string 指定的function。当前支持:count、max、min、sum。
range string 指定统计范围。
maxGroup string 最大组个数。
aggFilter string 表示仅统计满足特定条件的文档。
aggSamplerThresHold string 抽样统计的阈值。表示该值之前的文档会依次统计,该值之后的文档会进行抽样统计。
aggSamplerStep string 抽样统计的步长。

函数定义

function addAggregate($groupKey, $aggFun, $range = '', $maxGroup = '',$aggFilter = '', $aggSamplerThresHold = '', $aggSamplerStep = '')

使用示例

$search_obj->addAggregate($groupKey, $aggFun, $range, $maxGroup,$aggFilter, $aggSamplerThresHold, $aggSamplerStep);

删除指定的统计数据

请求参数

参数名称 类型 描述
groupKey string 指定的group key。

函数定义

function removeAggregate($groupKey)

使用示例

$search_obj->removeAggregate("cat_id");

获取统计相关信息

请求参数

参数名称 类型 描述
groupKey string 指定group key获取其相关信息,如果为空,则返回整个信息。

返回结果

类型 描述
array 统计相关信息

函数定义

function getAggregate($key = '')

使用示例

$result = $search_obj->getAggregate();

获取字符串类型的统计信息

返回结果

类型 描述
string 获取字符串类型的统计信息

函数定义

function getAggregateString()

使用示例

$result = $search_obj->getAggregateString();

添加distinct排序信息

例如:检索关键词“手机”共获得10个结果,分别为:doc1,doc2,doc3,doc4,doc5,doc6, doc7,doc8,doc9,doc10。其中前三个属于用户A,doc4-doc6属于用户B,剩余四个属于用户C。

如果前端每页仅展示5个商品,则用户C将没有展示的机会。但是如果按照user_id进行抽取,每轮抽

取1个,抽取2次,并保留抽取剩余的结果,则可以获得以下文档排列顺序:doc1、doc4、doc7、

doc2、doc5、doc8、doc3、doc6、doc9、doc10。可以看出,通过distinct排序,各个用户的

商品都得到了展示机会,结果排序更趋于合理。

更多说明请参见 API distinct子句

请求参数

参数名称 类型 描述
key string 为用户用于做distinct抽取的字段,该字段要求建立Attribute索引。
distCount int 为一次抽取的document数量,默认值为1。
distTimes int 为抽取的次数,默认值为1。
reserved string 为是否保留抽取之后剩余的结果,true为保留,false则丢弃,丢弃时totalHits的个数会减去被distinct而丢弃的个数,但这个结果不一定准确,默认为true。
distFilter string 为过滤条件,被过滤的doc不参与distinct,只在后面的 排序中,这些被过滤的doc将和被distinct出来的第一组doc一起参与排序。默认是全部参与distinct。
updateTotalHit string 当reserved为false时,设置update_total_hit为true,则最终total_hit会减去被distinct丢弃的的数目(不一定准确),为false则不减;默认为false。
maxItemCount int 设置计算distinct时最多保留的doc数目。
grade number 指定档位划分阈值。

函数定义

function addDistinct($key, $distCount = 0, $distTimes = 0,$reserved = '', $distFilter = '', $updateTotalHit = '',$maxItemCount = 0, $grade = '')

使用示例

//每次抽取3条文档,抽取4次,丢掉抽取之后的结果,并且更新搜索结果中总文档的个数
$search_obj->addDistinct($key, 3, 4, 'false', '', 'true');

删除某个字段的所有distinct排序信息

请求参数

参数名称 类型 描述
distinctKey string 指定的字段

函数定义

function removeDistinct($distinctKey)

使用示例

$search_obj->removeDistinct($distinctKey);

获取某字段的distinct排序信息

请求参数

参数名称 类型 描述
key string 指定的distinct字段,如果字段为空则返回所有distinct信息。

返回结果

类型 描述
array 指定字段的distinct排序信息

函数定义

function getDistinct($key = '')

使用示例

$result = $search_obj->getDistinct();

获取字符串类型的所有的distinct信息

返回结果

类型 描述
string 字符串类型的所有的distinct信息

函数定义

function getDistinctString()

使用示例

$result = $search_obj->getDistinctString();

设定指定索引字段范围的搜索关键词

[NOTE]:$query必须指定索引名称,格式类似为 索引名称:'搜索关键词'。 此query是查询必需的一部分,可以指定不同的索引名,并同时可指定多个查询及之间的关系

(AND, OR, ANDNOT, RANK)。

例如查询subject索引字段的query:“手机”,可以设置为

query=subject:'手机'。

NOTE: text类型索引在建立时做了分词,而string类型的索引则没有分词

更多说明请参见 API query子句

请求参数

参数名称 类型 描述
query string 设定搜索的查询词。
fieldName string 设定的索引范围。

函数定义

function setQueryString($query)

使用示例

$search_obj->setQueryString('default:阿里云');

获取当前指定的查询词内容

返回结果

类型 描述
string 当前指定的查询词内容

函数定义

function getQuery()

使用示例

$result = $search_obj->getQuery();

添加指定结果集返回的字段

请求参数

参数名称 类型 描述
field array\string 结果集返回的字段。

函数定义

function addFetchFields($field)

使用示例

//希望搜索结果只返回title,body,url和hit_count四个字段时的设置
$search_obj->addFetchFields("title");
$search_obj->addFetchFields("body");
$search_obj->addFetchFields("url");
$search_obj->addFetchFields("hit_count");

删除指定结果集的返回字段

请求参数

参数名称 类型 描述
fieldName string 指定字段名称。

函数定义

function removeFetchField($fieldName)

使用示例

$search_obj->removeFetchField("url");

设置kvpair

更多说明请参见 API 自定义kvpair子句

请求参数

参数名称 类型 描述
pair string 指定的pair信息。

函数定义

function setPair($pair)

使用示例

//例如我们在控制台中设计的表达式中需要根据用户的地理位置对结果进行排序
//在搜索时需要传入用户的地理位置信息,比如分别传入用户的经纬度信息
$search_obj->setPair("latitude:67.5367(N),longitude:4.768(E)");

获取当前的kvpair

返回结果

类型 描述
string 返回当前设定的kvpair。

函数定义

function getPair()

使用示例

$result = $search_obj->getPair();

增加自定义参数

请求参数

参数名称 类型 描述
paramKey string 参数名称。
paramValue string 参数值。

函数定义

function addCustomParam($paramKey, $paramValue)

使用示例

$search_obj->addCustomParam("xxx", "YYY");

指定精排算分的文档个数

若不指定则使用默认值200

请求参数

参数名称 类型 描述
rerankSize int 精排算分文档个数

函数定义

function addRerankSize($rerankSize)

使用示例

$search_obj->addRerankSize(200);

添加一条查询分析规则

请求参数

参数名称 类型 描述
QPName string 查询分析规则

函数定义

function addQPName($QPName)

获取设置的查询分析规则

返回结果

类型 描述
String 设置的查询分析规则

函数定义

function getQPName()

关闭某些功能模块。

有如下场景需要考虑: 1、如果要关闭整个qp的功能,则参数为空即可。

2、要指定某个索引关闭某个功能,则可以指定disableValue="processer:index",

processer:index为指定关闭某个processer的某个索引功能,其中index为索引名称,多个索引可以用“|”分隔,可以为index1[|index2...]

3、如果要关闭多个processor可以传递数组。

qp processor 有如下模块:

1、spell_check: 检查用户查询串中的拼写错误,并给出纠错建议。

2、term_weighting: 分析查询中每个词的重要程度,并将其量化成权重,权重较低的词可能不会参与召回。

3、stop_word: 根据系统内置的停用词典过滤查询中无意义的词

4、synonym: 根据系统提供的通用同义词库和语义模型,对查询串进行同义词扩展,以便扩大召回。

example:

"" 表示关闭整个qp。

"spell_check" 表示关闭qp的拼音纠错功能。

"stop_word:index1|index2" 表示关闭qp中索引名为index1和index2上的停用词功能。

请求参数

参数名称 类型 描述
functionName string 指定的functionName,例如“qp”等
disableValue string\array 需要关闭的值

函数定义

function addDisabledQP($disableValue = "")

添加一项禁止的功能模块

请求参数

参数名称 类型 描述
functionName string 功能模块名称
disableValue string 禁用的功能细节

函数定义

function addDisabledFunction($functionName, $disableValue = "")

获取所有禁止的功能模块

返回结果

类型 描述
array 所哟禁止的功能模块

函数定义

function getDisabledFunction()

以字符串的格式返回disable的内容。

返回结果

类型 描述
string 禁用的模块配置

函数定义

function getDisabledFunctionString()

获取精排算分文档个数

返回结果

类型 描述
int 精排算分文档个数

函数定义

function getRerankSize()

使用示例

$result = $search_obj->getRerankSize();

获取自定义参数

返回结果

类型 描述
string 自定义参数

函数定义

function getCustomParam()

使用示例

$result = $search_obj->getCustomParam();

获取指定结果集返回的字段列表

返回结果

类型 描述
array 指定结果集返回的字段列表

函数定义

function getFetchFields()

使用示例

$result = $search_obj->getFetchFields();

设置此次获取的scroll id的期时间。

可以为整形数字,默认为毫秒。也可以用1m表示1min;支持的时间单位包括: w=Week, d=Day, h=Hour, m=minute, s=second

请求参数

参数名称 类型 描述
scroll string\int 此次扫描请求的过期时间

函数定义

function setScroll($scroll)

获取scroll的失效时间。

返回结果

类型 描述
string\int 设置的过期时间

函数定义

function getScroll()
本文导读目录