Android API Guides----Adding Custom Suggestions

来源:互联网 发布:zepto.js 滑动不流 编辑:程序博客网 时间:2024/05/17 09:31

Adding Custom Suggestions

当使用Android的搜索对话框或搜索插件,您可以提供从数据在应用程序中创建自定义的搜索建议。例如,如果你的应用是一个字字典,你可以建议通过匹配到目前为止输入的文本,该字典单词。这是最宝贵的建议,因为你可以有效地预测用户想要什么,并提供随时访问它。图1示出了具有定制的建议搜索对话框的例子。


一旦您提供自定义的建议,也可以将其提供给全系统的快速搜索框,从您的应用程序之外提供访问您的内容。


你这个指南开始添加自定义的建议之前,需要先执行了搜索的Andr​​oid的搜索对话框或搜索小工具在应用程序中。如果没有,请参阅创建一个搜索界面。


基础




图1.截图自定义搜索建议搜索对话框。


当用户选择一个自定义的建议,Android系统发送一个意图可搜索的活动。而正常的搜索查询发送意图与动作ACTION_SEARCH,而是可以定义自定义建议使用ACTION_VIEW(或任何其他意图的动作),并且还包括与自己相关的选择建议数据。继续字典例如,当用户选择一个建议,您的应用程序可以立即打开定义这个词,而不是搜索的字典匹配。


提供自定义的建议,做到以下几点:


实现一个基本的搜索活动,如创建一个搜索界面描述。
修改与有关提供定制的建议内容提供者的信息搜索的配置。
建立您的建议的表(如在SQLiteDatabase),并与所需的列格式化表。
创建具有访问您的建议表中的内容提供商,并在你的清单声明供应商。
申报,当用户选择的建议(包括自定义动作和自定义数据)被发送意图的类型。
正如Android系统会显示搜索对话框,它也显示的搜索建议。所有你需要的是从哪个系统可以检索您的建议内容提供商。如果你不熟悉创建内容提供商,阅读的内容提供商开发指南,然后再继续。


当系统识别出您的活动是搜索,并提供搜索建议,下面的过程发生在用户类型的查询:


该系统以搜索查询文本(无论迄今已键入),并执行一个查询,管理您的建议,您的内容提供商。
你的内容提供商将返回一个指向是相关的搜索查询文本的所有建议光标。
系统显示的光标提供的建议列表。
一旦定制的建议显示,以下可能会发生:


如果用户键入另一个键,或改变以任何方式的查询,重复上述步骤,并建议列表更新为适当。
如果用户执行搜索,建议被忽略,搜索是使用正常ACTION_SEARCH意图传递到你的搜索活动。
如果用户选择的建议,意图被发送到你的搜索活动,背着一个自定义操作和自定义数据,以便您的应用程序可以打开建议的内容。
修改搜索的配置


要添加支持自定义的建议,加入了android:searchSuggestAuthority属性添加到<搜索>元素在你的搜索配置文件。例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:label="@string/app_label"    android:hint="@string/search_hint"    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"></searchable>
你可能需要一些额外的属性,这取决于你连接到每一个建议,如何你想查询格式化你的内容提供商的意图的类型。另一可选属性将在以下章节中讨论。


创建一个内容提供商


创建自定义的建议内容提供商要求有关的覆盖内容提供商开发者指南中的内容提供商以前的知识。在大多数情况下,为定制的建议内容提供商是一样的任何其他内容提供者。但是,对于每个你提供建议,在光标相应的行必须包括系统理解和使用格式化的建议特定列。


当用户开始输入到搜索对话框或搜索插件,系统通过调用查询可查询您的建议内容提供商()每次信打。在您的实现查询(),内容提供商必须寻找你的建议数据并返回一个指向你已经确定要好的建议行光标。


有关创建自定义的建议内容提供商的细节将在以下两节讨论:


操作建议查询
如何系统将请求发送给您的内容提供商,以及如何处理它们
构建一个建议表
如何定义该系统预计将在光标的列,每个查询返回
操作建议查询


当系统从内容提供商要求的建议,它要求你的内容提供商的查询()方法。您必须实现此方法来搜索您的建议数据并返回指向您认为相关的建议光标。


下面是系统传递给你的query()方法(按顺序列出)的参数的摘要:


URI
总是一个开放的内容,格式为:

content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY
默认行为是系统通过此URL和查询文本追加它。 例如:

content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY/puppies
在最终的查询文本使用URI编码规则进行编码,因此您可能需要执行搜索之前,对其进行解码。
该optional.suggest.path部分仅包含在URI如果您在与Android的搜索配置文件中设置这样的路径:searchSuggestPath属性。如果你使用多个搜索活动相同的内容提供商,在这种情况下,你需要消除歧义的建议查询的源这只需要。
注:SUGGEST_URI_PATH_QUERY是不是在URI中提供的文本字符串,而是一个恒定的,如果你需要参考这条道路,你应该使用。
projection
总是空
selection
在android提供的价值:寻找你的建议搜索的配置文件选择属性,或者返回null如果你还没有宣布了android:searchSuggestSelection属性。更多有关使用此得到下面的查询。
selectionArgs
包含搜索查询,如果您已声明了android数组的第一个(也是唯一一个)元素:searchSuggestSelection属性,在搜索的配置。如果你还没有宣布Android版本:searchSuggestSelection,那么这个参数为空。更多有关使用此得到下面的查询。
sortOrder
总是空
该系统可以给你搜索查询文本两种方式。缺省方式是用于查询文本到被包括作为URI中uri参数传递的内容的最后路径。但是,如果您在您的搜索配置的Andr​​oid选择值:searchSuggestSelection属性,则查询文本,而不是作为selectionArgs两个字符串数组的第一个元素来传递。这两个选项旁边总结。
获取URI中的查询
默认情况下,查询被追加为URI参数(Uri对象)的最后一段。要检索在这种情况下,查询文本,只需使用getLastPathSegment()。例如:

String query = uri.getLastPathSegment().toLowerCase();
此返回开放的,这是由用户输入查询文本的最后一个分段。
获取在选择参数查询
而不是使用URI,你可以决定它更有意义的查询()方法来获得它需要执行的查询一切,你要选择和selectionArgs两个参数进行适当的值。在这种情况下,添加了android:搜索建议选择属性,你与你的SQLite选择字符串搜索的配置。在选择字符串,包括一个问号(“?”)作为实际搜索查询的占位符。系统调用的查询()与选择的字符串作为选择参数和作为selectionArgs两个阵列中的第一个元素的搜索查询。
例如,这里是你会如何形成的android:searchSuggestSelection属性来创建一个全文检索语句:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:label="@string/app_label"    android:hint="@string/search_hint"    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"    android:searchSuggestIntentAction="android.intent.action.VIEW"    android:searchSuggestSelection="word MATCH ?"></searchable>
有了这个配置,您的query()方法提供了选择参数为“字匹配吗?”和selectionArgs两个参数作为搜索查询。当你通过这些到一个SQLite查询()方法,因为它们各自的参数,它们合成在一起(问号替换查询文本)。如果您选择接受建议的查询这种方式,需要通配符添加到查询文本,添加(和/或前缀)他们到selectionArgs两个参数,因为这个值被包裹在引号和到位的问号插入。
在上面的例子中的另一个新特性是机器人:搜索推荐IntentAction,当用户选择一个建议定义与每个意图发送的意图的动作。它在有关声明的建议的意图的部分进一步讨论。
提示:如果不希望定义在android一个选择条款:searchSuggestSelection属性,但仍希望能收到selectionArgs两个参数的查询文本,只需提供对Android的一个非空值:searchSuggestSelection属性。这触发selectionArgs两个传递查询,并可以忽略选择参数。通过这种方式,则可以改为在一个较低的水平定义实际的选择条款,使您的内容提供者不必处理。
构建一个建议表
创建光标没有表
如果使用系统所需的列的搜索建议不存储在一个表格式(如一个SQLite表),那么你可以搜索匹配您的建议的数据,然后将其格式化为对每个请求所需的表。要做到这一点,使用所需的列名创建一个MatrixCursor,然后使用addRow添加一行每一个建议(对象[])。从内容提供商的query()方法返回的最终产品。
当您返回建议用游标系统,该系统预计每行中特定列。所以,不管你是否决定将存储在设备上的SQLite数据库您的建议的数据,在Web服务器上的数据库,或者在设备或网络上的另一种格式,您必须格式化建议,表中的行,并与目前他们光标。该系统了解到若干列,但只有两个是必需的:
_ID
每个建议的唯一整行ID。该系统需要这个以目前在ListView建议。
SUGGEST_COLUMN_TEXT_1
这是作为一个建议的字符串。
下面列都是可选的(而且大多数都在下面的章节进一步讨论):
SUGGEST_COLUMN_TEXT_2
的字符串。如果您的光标包含此列,然后在两行格式提供的所有建议。此列中的字符串显示为主的建议文本的下方的文字较小的第二行。它可以为null或空,表示没有辅助文本。
SUGGEST_COLUMN_ICON_1
可绘制资源,内容或文件URI字符串。如果您的光标包含此列,那么将提供所有的建议在图标加文字格式与左侧的图标绘制。这可以为空或为零,表示此行中没有图标。
SUGGEST_COLUMN_ICON_2
可绘制资源,内容或文件URI字符串。如果您的光标包含此列,那么将提供所有的建议在图标加文字格式右侧的图标。这可以为空或为零,表示此行中没有图标。
SUGGEST_COLUMN_INTENT_ACTION
意图操作字符串。如果此列存在并且包含在给定的行中的值,在形成建议的意图时使用此处定义的动作。 sea​​rchSuggestIntentAction字段中的可搜索的配置:如果不设置元件,所述操作是从机器人采取。如果你的行动是对所有的建议一样,它是更有效的采用了android指定动作:searchSuggestIntentAction和省略此列。
SUGGEST_COLUMN_INTENT_DATA
数据URI字符串。如果此列存在并且包含在给定的行的值,这是在形成建议的意图时所使用的数据。如果未提供元件,该数据被从机器人采取:searchSuggestIntentData字段中的可搜索的配置。如果既没有提供源,目的的数据字段为空。如果数据是用于所有建议的相同,或者可使用一个恒定部分和一个特定的ID来描述,它是更有效的使用机器人来指定它:searchSuggestIntentData并省略此列。
SUGGEST_COLUMN_INTENT_DATA_ID
一个URI路径字符串。如果此列中存在并包含一个值在给定的行,则“/”和这个值被附加到在意图的数据字段。在可搜索的结构searchSuggestIntentData属性已经设置为适当的碱串:如果由机器人所指定的数据字段这应该只被使用。
SUGGEST_COLUMN_INTENT_EXTRA_DATA
任意数据。如果此列存在且包含在给定的行的值,这是在形成建议的意图时所使用的额外的数据。如果没有提供,意图的额外的数据字段为空。这列允许的建议,提供包括作为额外的意图的关键EXTRA_DATA_KEY其他数据。
SUGGEST_COLUMN_QUERY
如果此列中存在与该元件在给定的行存在,这是在形成建议的查询时所使用的数据,包括作为额外的意图的QUERY键。如果需要建议的行动是ACTION_SEARCH,否则可选。
SUGGEST_COLUMN_SHORTCUT_ID
只有提供快速搜索框的建议时使用。此列表示搜索建议是否应该被存储为一个快捷方式以及是否应进行验证。当用户点击从快速搜索框的建议的快捷方式通常形成。如果丢失,结果被存为快捷方式,从不刷新。如果设置为SUGGEST_NEVER_MAKE_SHORTCUT,结果没有被存储作为快捷键。否则,快捷方式ID用来检查回来的最多使用SUGGEST_URI_PATH_SHORTCUT日期的建议。
SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING
只有提供快速搜索框的建议时使用。此列指定了一个微调,应改为显示从SUGGEST_COLUMN_ICON_2一个图标,而这个建议的快捷方式在快速搜索框被刷新。
其中的一些列在下面的章节中讨论更多。
对于声明的建议意图
当用户选择从弹出的搜索对话框或窗口小部件下面的列表中建议,系统会发送一个定制意向的搜索活动。你必须定义的意图的操作和数据。
声明的意图行动
自定义建议,最常见的意图动作是ACTION_VIEW,当你想打开的东西,比如定义为一个字,一个人的联系信息,或一个网页,是适当的。然而,意图动作可以是任何其它行动,甚至可以是每个建议不同。
根据您是否希望所有建议使用相同的意图的动作,你可以定义在两个方面采取行动:
采用了Android:您搜索的配置文件的searchSuggestIntentAction属性来定义所有建议的操作。
例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:label="@string/app_label"    android:hint="@string/search_hint"    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"    android:searchSuggestIntentAction="android.Intent.action.VIEW" ></searchable>
使用SUGGEST_COLUMN_INTENT_ACTION列定义个人建议的操作。
在SUGGEST_COLUMN_INTENT_ACTION列添加到您的建议表,并为每个建议,在它的地方使用(如“android.Intent.action.VIEW”)的动作。
您也可以结合这两种技术。例如,您可以包括Android版本:与默认情况下,所有建议使用与操作searchSuggestIntentAction属性,然后宣布在SUGGEST_COLUMN_INTENT_ACTION列不同的动作覆盖这个行动的一些建议。如果不包括在SUGGEST_COLUMN_INTENT_ACTION列的值,然后在android提供的意图:使用searchSuggestIntentAction属性。


注意:如果您不包括机器人:searchSuggestIntentAction属性,在搜索的配置,则必须包括SUGGEST_COLUMN_INTENT_ACTION列的值每建议,或者意图将失败。


声明意图数据


当用户选择一个建议,您的搜索活动接收到你定义(如前一节中讨论)的行动的意图,但意图也必须携带数据,以便为您的活动,以确定选择哪些建议。具体地,数据应该是唯一的每个建议,如在您的SQLite表建议行ID。当接收的意图,可以检索与的getData()或getDataString附加的数据()。


可以定义包含在两个方面的意图的数据:


定义你的建议表的SUGGEST_COLUMN_INTENT_DATA列内的每个建议的数据。
通过包括SUGGEST_COLUMN_INTENT_DATA列,然后为每一行唯一的数据填充它提供了在建议表中的每个意图所有必要的数据信息。从该列中的数据连接到完全按照您在此列定义它的意图。然后,您可以用的getData()或getDataString()获取它。
提示:这是最简单的,通常使用表的行ID作为意向数据,因为它始终是唯一的。而要做到这一点最简单的方法是使用SUGGEST_COLUMN_INTENT_DATA列名作为该行ID列的别名。见其中SQLiteQueryBuilder创建列名的别名投影图的示例,检索字典示例应用程序。


片段的数据URI分为两部分:通用于所有建议和部分唯一的每个建议的部分。分别是搜索的配置和建议表的SUGGEST_COLUMN_INTENT_DATA_ID列searchSuggestintentData属性:将这些部件装入Android。
声明片URI的是共同的在android的所有建议:可搜索的配置searchSuggestIntentData属性。例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:label="@string/app_label"    android:hint="@string/search_hint"    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"    android:searchSuggestIntentAction="android.intent.action.VIEW"    android:searchSuggestIntentData="content://com.example/datatable" ></searchable>
然后包括在您的建议表的SUGGEST_COLUMN_INTENT_DATA_ID列中的每个建议(唯一的一部分)的最终路径。当用户选择一个建议,系统将在Android的字符串:searchSuggestIntentData,追加一个斜杠(“/”),然后从SUGGEST_COLUMN_INTENT_DATA_ID柱增加了各自的价值,形成一个完整的内容URI。然后,您可以检索乌里用的getData()。
添加更多的数据
如果你需要表达你的意图更多的信息,您可以添加其他表列,SUGGEST_COLUMN_INTENT_EXTRA数据,这些数据可以存储有关建议的附加信息。保存在此列中的数据被放置在意向的额外捆绑的EXTRA_DATA_KEY。
处理意向
现在,您提供的定制意向的自定义搜索建议,你需要你的搜索活动,当用户选择一个建议来处理这些意图。这是除了处理ACTION_SEARCH意图,你的搜索活动已经这样做了。这里是你如何可以在活动的onCreate()回调过程中处理意图的例子:

Intent intent = getIntent();if (Intent.ACTION_SEARCH.equals(intent.getAction())) {    // Handle the normal search query case    String query = intent.getStringExtra(SearchManager.QUERY);    doSearch(query);} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {    // Handle a suggestions click (because the suggestions all use ACTION_VIEW)    Uri data = intent.getData();    showResult(data);}
在本实施例中,意图动作是ACTION_VIEW并进行数据的完整的URI指向建议的项目,如通过机器人来合成:searchSuggestIntentData串和SUGGEST_COLUMN_INTENT_DATA_ID列。然后该URI传递给将查询由URI指定的项目的内容提供者的本地showResult()方法。


注意:您不需要一个意图过滤器添加到Android清单文件为你的Andr​​oid定义的意图行动:searchSuggestIntentAction属性或SUGGEST_COLUMN_INTENT_ACTION列。该系统通过名称打开你的搜索活动来提供的建议的意图,所以活动不需要声明的接受动作。


重写查询文本


如果用户使用方向控制(例如使用轨迹球或D-垫)导航通过建议列表,查询文本不更新,默认情况下。然而,因为它出现在文本框中与建议符合当前焦点的查询就可以暂时改写用户的查询文本。这使用户能够查看正在提出何种查询(如果适用),然后选择搜索框,并派遣其作为搜索之前编辑查询。


你可以重写通过以下方式查询文本:


添加了android:搜索模式属性可搜索的配置与“queryRewriteFromText”的价值。在这种情况下,从建议的SUGGEST_COLUMN_TEXT_1列中的内容被用来重写查询的文本。
添加了android:搜索模式属性可搜索的配置与“queryRewriteFromData”的价值。在这种情况下,从建议的SUGGEST_COLUMN_INTENT_DATA列中的内容被用来重写查询的文本。这应该只与URI的或旨在是用户可见的,比如HTTP网址其他数据格式一起使用。内部URI方案不应该被用来重写在这种方式查询。
提供您的建议表的SUGGEST_COLUMN_QUERY列一个唯一的查询文本字符串。如果此列存在并包含当前建议的值,它是用来改写的查询文本(并覆盖先前任一实现)。
揭露搜索建议来快速搜索框


一旦配置您的应用提供定制的搜索建议,使它们提供给全局可访问快速搜索框是修改您搜索的配置,包括Android作为简单:includeInGlobalSearch为“真”。


其中额外的工作是必要的唯一情况是,当你的内容提供商需要一个读取权限。在这种情况下,您需要添加一个特殊的<路径许可>元素的提供者给予快速搜索框读取访问你的内容提供商。例如:

<provider android:name="MySuggestionProvider"          android:authorities="com.example.MyCustomSuggestionProvider"          android:readPermission="com.example.provider.READ_MY_DATA"          android:writePermission="com.example.provider.WRITE_MY_DATA">  <path-permission android:pathPrefix="/search_suggest_query"                   android:readPermission="android.permission.GLOBAL_SEARCH" /></provider>
在这个例子中,提供者限制读取和写入访问的内容。在<路径许可>元素修正通过授予当“android.permission.GLOBAL_SEARCH”允许存在“/ search_suggest_query”路径前缀中的内容读取权限的限制。这将授予获得快速搜索框,以便它可以查询您的建议内容提供商。


如果您的内容提供商并没有强制读取权限,那么快速搜索框默认情况下可以读取它。


在设备上启用的建议


当应用程序被配置为提供快速搜索框的建议,它实际上并没有启用,以提供快速搜索框的建议,在默认情况下。这是用户的选择是否包括从快速搜索框您的应用程序的建议。为了使您的应用程序搜索建议,用户必须打开“检索项目”(在设置>搜索),使您的应用程序作为一个可搜索项。


每个应用程序可用来快速搜索框已在检索的项目设置页面中的条目。该条目包括应用程序和什么样的内容可以从应用程序进行搜索,并提供在快速搜索框建议的简短描述的名称。要定义您的搜索应用程序的说明文字,添加了android:searchSettingsDescription属性可搜索的配置。例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"    android:label="@string/app_label"    android:hint="@string/search_hint"    android:searchSuggestAuthority="com.example.MyCustomSuggestionProvider"    android:searchSuggestIntentAction="android.intent.action.VIEW"    android:includeInGlobalSearch="true"    android:searchSettingsDescription="@string/search_description" ></searchable>
Android的字符串:searchSettingsDescription应尽量精简,并说明这是搜索的内容。例如,“艺术家,专辑和曲目”的音乐应用程序,或记事本应用“保存笔记”。因此用户知道提供什么样的建议提供了这种描述是重要的。你应该总是将这个属性时,机器人:includeInGlobalSearch是“真”。


请记住,用户必须访问设置菜单,使您的应用程序搜索建议之前的搜索建议出现在快速搜索框。因此,如果搜索是你的应用的一个重要方面,那么你可能要考虑的方式传达给用户 - 你可能会提供一个音符,他们推出,指示他们如何启用快速搜索建议应用程序在第一时间搜索框。


管理快速搜索框快捷方式的建议


用户从快速搜索框选择建议可自动制作成快捷方式。这些系统已经从内容提供商复制,因此它可以快速访问的建议,而不需要重新查询你的内容提供商的建议。


默认情况下,这是通过快速搜索框检索到的所有建议启用,但如果随着时间的推移你的建议数据的变化,那么你可以要求快捷键刷新。例如,如果您的建议是指动态数据,如联系人的状态,那么你应该要求时显示给用户的建议的快捷键刷新。要做到这一点,请在您的建议表SUGGEST_COLUMN_SHORTCUT_ID。利用此列,可以配置在下列方式之一,每条建议的快捷行为:


具有快速搜索框重新查询的建议,快捷的新版本的内容提供商。
在SUGGEST_COLUMN_SHORTCUT_ID列提供一个值和建议是每次显示的快捷时重新查询了一个新的版本。快捷方式快速地将显示任何数据最近是可用,直到刷新查询返回,此时建议是刷新用新信息。刷新查询发送到您的内容提供商,SUGGEST_URI_PATH_SHORTCUT(而不是SUGGEST_URI_PATH_QUERY)的URI路径。
返回光标应该用相同的列原来的建议包含一个建议,或者是空的,表明该快捷方式不再有效(在这种情况下,建议消失,快捷方式删除)。
如果一个建议是指可能需要更长的时间来刷新,如基于网络的刷新数据,你也可以在SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING柱,以“真”值,以显示右手进度微调添加到您的建议表图标,直到刷新完成。比“真实”之外的任何值不显示进度喷丝。
被复制到一个快捷方式在所有预防建议。
提供在SUGGEST_COLUMN_SHORTCUT_ID列SUGGEST_NEVER_MAKE_SHORTCUT的值。在这种情况下,建议从不复制到快捷方式。这个,如果你绝对不想以前复制的建议,似乎只应是必要的。 (回想一下,如果你提供的列正常值,则建议快捷方式会出现只有等到刷新查询返回)。
允许默认快捷行为适用。
离开SUGGEST_COLUMN_SHORTCUT_ID为空,将不会改变,可以保存为一个快捷方式,每条建议。
如果没有你的建议不断变化,那么你不需要SUGGEST_COLUMN_SHORTCUT_ID列在所有。


注:快速搜索框最终决定是否要创建一个快捷方式的建议,考虑到这些价值从你的强烈要求的应用程序也不能保证您所请求的建议的快捷方式的行为会受到尊重。


关于快速搜索框建议排名


一旦你让你的应用程序的搜索建议提供给快速搜索框,快速搜索框的排名决定的建议是如何浮出水面的用户特定的查询。这可能取决于很多其他的应用程序怎么也该查询结果,并且用户已经多久相比,那些从其他应用程序中选择您的结果。有没有你的建议是如何排名的保证,或者您的应用程序的建议是否显示在所有给定查询。一般情况下,可以期待的是提供优质的结果增加了被摆在突出位置,并提供低质量的建议是更有可能被排名较低或不显示应用提供您的应用程序的建议的可能性。


请参阅检索字典示例应用程序的自定义搜索建议的完整演示。

0 0