全部产品
云市场

新下拉提示

更新时间:2019-08-22 11:02:26

功能介绍

下拉提示是搜索服务的基础功能,在用户输入查询词的过程中,智能推荐候选query,提高用户输入效率,帮助用户尽快找到想要的内容。

下拉提示实现了基于用户文档内容的query智能识别通过中,可以通过中文前缀,拼音全拼,拼音首字母简拼查询以及汉字加拼音等查询下拉提示的候选query。

例如,连衣裙 这个query,可以通过如下方式查询得到:

  • 中文前缀:连,连衣;
  • 全拼前缀:l, li, lian, lianyi, lianyiqun, …
  • 简拼前缀:l, ly, lyq;
  • 汉字加拼音: 连yi, 连衣qun;

但不支持下拉方式查询:

  • 拼音加汉字: lian衣, lian衣裙,连yi裙
  • 原文:连衣裙

此外,用户可以通过干预词条对下拉提示的数据进行干预。

支持应用

标准版应用类型,不支持下拉提示。仅高级版应用支持。

数据来源

下拉提示数据目前主要来源于应用的文档。每个下拉提示最多可以从一个应用中选择3个文本类型的字段作为数据来源。处理时,系统会选取应用中的部分文档(百万级别),对这些文档中被选中的字段按照指定的规则进行处理,生成下拉提示的候选数据。之后再按一定规则保留一定量的数据作为下拉提是候选query(百万级别)。

query生成规则

目前,系统支持两种规则生成候选query:抽取和原值保留。

抽取

对字段的内容进行一定的处理,抽取有意义的term进行组合,得到一些候选query。这种方式尽量保证生成的候选query能召回对应的文档。

原值保留

顾名思义,该规则对字段内容不做任何处理,直接将其作为下拉提示的候选query。但当字段内容超过一定限制(60字节)时,将字段内容进行截断,保留前60个字节的内容作为候选query。该规则适用于字段内容较短且含义明确。

干预词条

目前下拉提示支持对候选query进行干预,包括推荐名单和黑名单。

黑名单

在黑名单中的query,就不会再出现在下拉提示的结果中。因此,当下拉提示结果中出现一些业务上不想要的结果时,可通过将这些结果添加到黑名单中,就可以实现对这些结果的屏蔽。目前,黑名单只支持精确匹配。后续将会增加pattern匹配的功能。

推荐名单

在推荐名单里的query,系统会将其排在下拉结果的前面。因此,当某些优质query没有被系统识别出来,或者排序靠后时,通过将其加到推荐名单中,达到更好的下拉提示效果。

配额说明

  • 目前下拉提示为免费功能,因此计算资源和存储资源为系统统一设置。每个下拉提示的计算资源约为100QPS,存储资源约200W个候选query;

注意事项

  • 下拉提示仅支持从一个应用中选择创建了索引的TEXT、SHORT_TEXT类型的字段作为数据来源;
  • 前缀查询结果不足时,使用非前缀查询补充结果。 如输入”连衣”时候,如果没有”连衣”为前缀的候选query,可以提示”春款连衣裙”;
  • 修改应用结构时,不能修改下拉提示数据来源的字段;
  • 删除应用时,对应的下拉提示也会被删掉;
  • 下拉提示搜索时,query参数长度最大支持18字节,否则会报错,返回无结果;
  • 下拉提示搜索时,hit参数的取值范围为(0, 10],否则按默认10处理,且会返回一个错误(例:当hit设置了0或-1或11时,默认按10处理并返回一个错误。);
  • 推荐名单中的query条数不能超过500;
  • 黑名单中的query条数不能超过500;
  • 推荐名单和黑名单数据有冲突时,黑名单优先级更高;
  • 推荐名单和白名单的修改都需要重新训练模型后才能生效;
  • 下拉提示的数据更新,主要通过用户手动触发,或者系统默认的周期性更新;数据更新记录可以通过页面上线的模型训练记录查看;
  • 下拉提示的训练的时间,和应用的数据量、当时的系统负载有关;如果长时间(大于半个小时)没有训练结束,请联系我们;

使用建议

  • 选择内容简洁,和文档主题相关的字段;
  • 合理使用原值保留和抽取规则;
  • 查询结果中,suggestions是本次查询的结果,errors表示本次查询是否有错误发生。errors不为空,不代表suggestions为空。因此,解析时结果时,都得通过suggestions是否为空来判断是否无数据展示。

流程演示

  1. 点击应用列表——算法功能:下拉提示(下图的搜索测试均以SearchTest应用为例)1

  2. 点击“创建下拉提示”2

  3. 输入下拉提示的名称、下拉提示关联应用的应用名称并添加来源字段3

  4. 选择来源字段(来源字段可以支持TEXT以及SHORT_TEXT两种类型)4

  5. 如图选择了两种处理方式,抽取以及原值保留作为样例进行下拉提示测试5

  6. 点击“确定”后,勾选完成后立即训练(或者不勾选手动训练),保存下拉提示配置生效6

  7. 下拉提示创建后,需要20-30分钟左右的训练时间7

  8. 下拉提示效果测试,图中分别为“抽取”以及“原值保留”的两种抽取方式的效果测试8

注意:

已经使用老版本下拉提示的应用(老高级版)不能使用新下拉提示,您可以迁移到新高级版应用再使用。

新下拉提示建议使用新的sdk/api进行调用

新下拉提示 Java SDK 和 Demo

SDK

aliyun-sdk-opensearch 3.2.0

  1. <dependency>
  2. <groupId>com.aliyun.opensearch</groupId>
  3. <artifactId>aliyun-sdk-opensearch</artifactId>
  4. <version>3.2.0</version>
  5. </dependency>

Demo

API: GET v3/openapi/suggestions/{suggestion_name}/actions/search?hit=10&query={your_query}

Java SDK demo 如下

  1. package com.example.opensearch;
  2. import com.aliyun.opensearch.OpenSearchClient;
  3. import com.aliyun.opensearch.SuggestionClient;
  4. import com.aliyun.opensearch.sdk.generated.OpenSearch;
  5. public class SuggestionSearch {
  6. public static void main(String[] args) {
  7. final String accesskey = "填入accesskey信息";
  8. final String secret = "填入secret信息";
  9. final String host = "填入下拉提示关联应用所在区域的host";
  10. final String suggestionName = "填入下拉提示名称";
  11. final String query = "填入查询词";
  12. final byte hits = 8; // 最大返回条数
  13. final OpenSearch opensearch = new OpenSearch(accesskey, secret, host);
  14. final OpenSearchClient serviceClient = new OpenSearchClient(opensearch);
  15. final SuggestionClient suggestionClient = new SuggestionClient(suggestionName, serviceClient);
  16. suggestionClient.setQuery(query);
  17. suggestionClient.setHits(hits);
  18. String result;
  19. try {
  20. result = suggestionClient.search();
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. return;
  24. }
  25. System.out.println(result);
  26. }
  27. }