新增自訂搜尋建議

使用 Android 搜尋對話方塊或搜尋小工具時,您可以提供根據應用程式資料建立的自訂搜尋建議。舉例來說,如果應用程式是字典,您可以在使用者輸入查詢前,從字典中依據輸入的文字建議字詞。這些建議非常實用,因為可以有效預測使用者需求,並立即存取這些資料。圖 1 是包含自訂建議的搜尋對話方塊範例。

在您提供自訂建議後,您也可以將自訂建議提供給整個系統的快速搜尋框,讓開發人員從應用程式以外的位置存取內容。

新增自訂建議之前,請實作 Android 搜尋對話方塊或搜尋小工具,以便在應用程式中搜尋。請參閱「建立搜尋介面」和「內容供應器」。

基本概念

圖 1 含有自訂搜尋建議的搜尋對話方塊螢幕截圖。

使用者選取自訂建議時,系統會將 Intent 傳送至可搜尋的活動。與使用 ACTION_SEARCH 動作傳送意圖的一般搜尋查詢不同,您可以改為定義自訂建議以使用 ACTION_VIEW 或任何其他意圖動作,並納入與所選建議相關的資料。在字典範例中,當使用者選取建議項目時,應用程式可以立即開啟該字詞的定義,而不必從字典搜尋相符項目。

如要提供自訂建議,請執行下列步驟:

  • 實作基本的可搜尋活動,如建立搜尋介面所述。
  • 根據提供自訂建議的內容供應器相關資訊,修改可供搜尋的設定。
  • 為建議建立資料表 (例如使用 SQLiteDatabase 建立),並使用必要資料欄設定資料表格式。
  • 建立可存取建議資料表的內容供應器,並在資訊清單中宣告供應器。
  • 宣告使用者選取建議時要傳送的 Intent 類型,包括自訂動作和自訂資料。

就像 Android 系統會顯示搜尋對話方塊一樣,也會顯示搜尋建議。您需要內容供應器,以便系統擷取建議。請參閱內容供應器,瞭解如何建立內容供應器。

當系統辨識出您的活動可供搜尋並提供搜尋建議時,使用者輸入查詢時,系統會執行以下程序:

  1. 系統會擷取搜尋查詢文字 (亦即目前輸入的任何文字),並向內容供應器執行查詢,以管理您的建議。
  2. 內容供應器會傳回 Cursor,指向與搜尋查詢文字相關的所有建議。
  3. 系統會顯示 Cursor 提供的建議清單。

顯示自訂建議後,可能會發生下列情況:

  • 如果使用者輸入其他字母或變更查詢,先前的步驟會重複執行,建議清單也會隨之更新。
  • 如果使用者執行搜尋,系統會忽略建議,並使用一般 ACTION_SEARCH 意圖將搜尋傳送至您的可搜尋活動。
  • 如果使用者選取建議,系統會將意圖傳送至可搜尋的活動,其中包含自訂動作和自訂資料,以便應用程式開啟建議內容。

修改可供搜尋的設定

如要新增自訂建議支援功能,請在可搜尋設定檔中將 android:searchSuggestAuthority 屬性新增至 <searchable> 元素,如以下範例所示:

<?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>

您可能需要根據附加至每項建議的意圖類型,以及您希望內容供應器的查詢格式,可能需要採用其他屬性。以下各節將討論其他選用屬性。

建立內容供應器

如要建立自訂建議的內容供應器,請先參閱內容供應器,瞭解如何建立內容供應器。自訂建議的內容供應器與其他內容供應器類似。但是,對於您提供的每個建議,Cursor 中的對應資料列都必須包含系統能理解的特定資料欄,且會用於設定建議格式。

使用者在搜尋對話方塊或搜尋小工具中輸入文字時,每當有人輸入字母時,系統會呼叫 query(),藉此查詢內容供應器來取得建議。實作 query() 時,內容供應器必須搜尋您的建議資料,並傳回 Cursor,以指向其判定適合建議的資料列。

如要進一步瞭解如何建立用於自訂建議的內容供應器,請參閱下列兩個章節:

處理建議查詢
系統如何傳送要求給內容供應器,以及相關處理方式。
建立建議表格
如何定義每次查詢傳回的 Cursor 中預期的資料欄。

處理建議查詢

當系統向內容供應器要求建議時,會呼叫內容供應器的 query() 方法。實作此方法即可搜尋您的建議資料,並傳回指向您您認為相關建議的 Cursor

以下摘要說明系統傳送至 query() 方法的參數,並依序列出:

  1. uri

    一律是內容 Uri,格式如下:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY
    

    預設行為是由系統傳遞此 URI,並為其附加查詢文字:

    content://your.authority/optional.suggest.path/SUGGEST_URI_PATH_QUERY/puppies
    

    結尾的查詢文字是使用 URI 編碼規則進行編碼,因此您可能需要在搜尋前將其解碼。

    您必須在可搜尋的設定檔中透過 android:searchSuggestPath 屬性設定這類路徑,才會包含在 URI 中 optional.suggest.path 部分。只有在多個可搜尋活動使用相同的內容供應器時,才需要使用這個名稱。在這種情況下,請區別建議查詢的來源。

  2. projection
    一律為空值。
  3. selection
    可供搜尋設定檔的 android:searchSuggestSelection 屬性提供的值;如果您未宣告 android:searchSuggestSelection 屬性,則為空值。下節會進一步討論。
  4. selectionArgs
    如果您在可搜尋的設定中宣告 android:searchSuggestSelection 屬性,該查詢會包含搜尋查詢做為陣列的第一個元素。如果您未宣告 android:searchSuggestSelection,則這個參數為空值。下節將進一步說明。
  5. sortOrder
    一律為空值。

系統可透過兩種方式將搜尋查詢文字傳送給您。根據預設,系統會將查詢文字納入 uri 參數所傳遞的內容 URI 最後路徑。不過,如果您在可搜尋設定的 android:searchSuggestSelection 屬性中加入選取值,查詢文字會改為傳遞做為 selectionArgs 字串陣列的第一個元素。接下來將說明這兩個選項。

取得 URI 中的查詢

根據預設,查詢會附加為 uri 參數的最後一個區段,也就是 Uri 物件。如要在這種情況下擷取查詢文字,請使用 getLastPathSegment(),如以下範例所示:

Kotlin

val query: String = uri.lastPathSegment.toLowerCase()

Java

String query = uri.getLastPathSegment().toLowerCase();

這會傳回 Uri 的最後一個區段,也就是使用者輸入的查詢文字。

透過選取引數取得查詢

比起使用 URI,您的 query() 方法可能更適合接收執行查詢所需的所有資訊,而您可能會希望 selectionselectionArgs 參數提供適當的值。在此情況下,請使用 SQLite 選取字串,將 android:searchSuggestSelection 屬性新增至可供搜尋的設定。在選取字串中,請加入問號 (?) 做為實際搜尋查詢的預留位置。系統會將選取字串做為 selection 參數來呼叫 query(),並將搜尋查詢做為 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() 方法會將 selection 參數做為 "word MATCH ?"selectionArgs 參數傳送做為搜尋查詢。當您將這些引數傳遞至 SQLite query() 方法作為各自對應的引數時,系統會一併合成這些引數,也就是說,問號會替換為查詢文字。如果您透過這種方式接收建議查詢,而且需要在查詢文字中加入萬用字元,請在 selectionArgs 參數中附加或前置字元,因為這個值會以引號括住,並且插入來取代問號。

上述範例的另一個屬性是 android:searchSuggestIntentAction,其定義使用者選取建議時,每個意圖傳送的意圖動作。如要進一步瞭解上述做法,請參閱「宣告建議的意圖」一節。

建立建議表格

使用 Cursor 將建議傳回系統時,系統會預期每一列中的特定資料欄。無論您會將建議資料儲存在裝置上的 SQLite 資料庫、網路伺服器中的資料庫,或是裝置或網路上的其他格式,請將建議格式化為資料表中的資料列,並使用 Cursor 呈現。

系統可以瞭解幾個欄,但只需要兩個欄:

_ID
每項建議的專屬整數資料列 ID。系統要求這項設定才能在 ListView 中顯示建議。
SUGGEST_COLUMN_TEXT_1
以建議的形式呈現的字串。

以下各欄皆為選填。我們會在以下各節中進一步說明。

SUGGEST_COLUMN_TEXT_2
字串。如果您的 Cursor 包含此欄,則所有建議都會以兩行格式提供。此欄中的字串會以第二行文字顯示在主要建議文字下方。值可以是空值或空白,表示沒有次要文字。
SUGGEST_COLUMN_ICON_1
可繪製資源、內容或檔案 URI 字串。如果 Cursor 包含此欄,系統會以圖示加號文字格式提供所有建議,並在左側顯示可繪項目圖示。這個值可以是空值或零,表示這個資料列中沒有任何圖示。
SUGGEST_COLUMN_ICON_2
可繪製資源、內容或檔案 URI 字串。如果 Cursor 包含此欄,則所有建議都會以圖示 + 文字格式提供,右側圖示。這個值可以是空值或零,表示這個資料列中沒有任何圖示。
SUGGEST_COLUMN_INTENT_ACTION
意圖動作字串。如果這個資料欄確實存在,且在特定資料列包含值,系統就會使用這裡定義的動作來建立建議意圖。如未提供元素,系統會從搜尋設定中的 android:searchSuggestIntentAction 欄位執行動作。如果所有建議的動作都相同,建議您使用 android:searchSuggestIntentAction 指定動作,並省略此欄。
SUGGEST_COLUMN_INTENT_DATA
資料 URI 字串。如果這個資料欄存在且在指定資料列包含值,系統就會在建立建議意圖時使用這項資料。如未提供元素,系統會從搜尋設定中的 android:searchSuggestIntentData 欄位擷取資料。如果未提供來源,意圖的資料欄位為空值。如果所有建議的資料都相同,或是使用常數部分和特定 ID 來描述,則使用 android:searchSuggestIntentData 指定資料並省略這個資料欄會比較有效率。
SUGGEST_COLUMN_INTENT_DATA_ID
URI 路徑字串。如果這個資料欄存在且在指定資料列包含值,則「/」並將此值附加到意圖中的資料欄位。只有在可搜尋的設定中 android: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 的圖示。

上述資料欄大多會在後續幾節中進一步討論。

宣告建議的意圖

當使用者從搜尋對話方塊或小工具下方顯示的清單中選取建議時,系統會傳送自訂 Intent 至可搜尋的活動。您必須為意圖定義動作和資料。

宣告意圖動作

針對自訂建議,最常見的意圖動作是 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 屬性中提供的意圖。

宣告意圖資料

當使用者選取建議時,可供搜尋的活動會透過您定義的動作 (如上一節所述) 接收意圖,但意圖也必須利用資料,以識別選取的建議項目。具體來說,每項建議的資料都必須不重複,例如 SQLite 資料表中建議的資料列 ID。收到意圖時,您可以使用 getData()getDataString() 擷取附加的資料。

您可以透過下列兩種方式定義包含意圖的資料:

  • 在建議表格的 SUGGEST_COLUMN_INTENT_DATA 欄中,定義每項建議的資料。

    在建議表格中加入 SUGGEST_COLUMN_INTENT_DATA 欄,然後在各列填入專屬資料,為各個意圖提供所有必要資訊資訊。此欄資料會完全附加至意圖,如同您在此欄中定義的意圖。接著,您可以使用 getData()getDataString() 擷取。

  • 將資料 URI 片段分為兩部分:所有建議通用的部分,以及每項建議的專屬部分。分別將這些部分放入可搜尋設定的 android:searchSuggestintentData 屬性和建議表格的 SUGGEST_COLUMN_INTENT_DATA_ID 欄。

    以下範例說明如何在可搜尋設定的 android:searchSuggestIntentData 屬性中,宣告所有建議通用的 URI 片段:

      <?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() 擷取 Uri

新增更多資料

如果您需要透過意圖表達更多資訊,可以新增其他資料表欄 (例如 SUGGEST_COLUMN_INTENT_EXTRA_DATA),儲存與建議相關的其他資訊。這個資料欄中儲存的資料會放在意圖額外套件的 EXTRA_DATA_KEY 中。

處理意圖

透過自訂意圖提供自訂搜尋建議後,當使用者選取建議時,您需要可供搜尋的活動來處理這些意圖。除了處理可搜尋活動之外的 ACTION_SEARCH 意圖之外,以下範例說明如何在活動的 onCreate() 回呼期間處理意圖:

Kotlin

when(intent.action) {
    Intent.ACTION_SEARCH -> {
        // Handle the normal search query case.
        intent.getStringExtra(SearchManager.QUERY)?.also { query ->
            doSearch(query)
        }
    }
    Intent.ACTION_VIEW -> {
        // Handle a suggestions click, because the suggestions all use ACTION_VIEW.
        showResult(intent.data)
    }
}

Java

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,如由 android:searchSuggestIntentData 字串和 SUGGEST_COLUMN_INTENT_DATA_ID 資料欄合成。接著,系統會將 URI 傳遞至本機 showResult() 方法,以便查詢 URI 指定項目的內容供應器。

重新編寫查詢文字

根據預設,如果使用者使用方向鍵 (例如軌跡球或 D-Pad) 瀏覽建議清單,查詢文字不會更新。不過,您可以暫時根據文字顯示在文字方塊中的查詢文字,暫時改寫符合焦點建議的查詢。如此一來,使用者就能查看系統建議的查詢,並且可以先選取搜尋框並編輯查詢,再將查詢分派做為搜尋。

您可以透過下列方式重新撰寫查詢文字:

  • android:searchMode 屬性新增至可供搜尋的設定,並使用 "queryRewriteFromText" 值。在此情況下,系統會使用建議 SUGGEST_COLUMN_TEXT_1 資料欄中的內容來重新編寫查詢文字。
  • android:searchMode 屬性新增至可供搜尋的設定,並使用 "queryRewriteFromData" 值。在此情況下,系統會使用建議 SUGGEST_COLUMN_INTENT_DATA 資料欄中的內容來重新編寫查詢文字。請只將這與打算向使用者顯示的 URI 或其他資料格式 (例如 HTTP 網址) 搭配使用。請勿使用內部 URI 配置以這種方式重新編寫查詢。
  • 在建議表格的 SUGGEST_COLUMN_QUERY 欄中,提供不重複的查詢字串。如果這個資料欄存在且包含目前建議的值,則系統會使用該資料欄重新編寫查詢文字,並覆寫先前的任一實作。

在快速搜尋框中顯示搜尋建議

設定應用程式以提供自訂搜尋建議後,您就可以輕鬆修改可搜尋的設定,加入 android:includeInGlobalSearch 的值 "true",這樣全球使用者都能輕鬆存取「快速搜尋框」。

在內容供應器要求讀取權限的情況下,唯一需要執行的情境是必要作業。在此情況下,您必須新增 <path-permission> 元素,讓供應器授予快速搜尋框讀取內容供應器的權限,如以下範例所示:

<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" 權限存在時,<path-permission> 元素會授予 "/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 的字串,並呈現可供搜尋的內容。例如音樂應用程式的「演出者、專輯和曲目」,或筆記本應用程式的「已儲存的附註」十分重要,讓使用者瞭解系統提供的建議類型。如果 android:includeInGlobalSearch 為 true,請一律加入這個屬性。

由於使用者必須造訪設定選單,才能為應用程式啟用搜尋建議,因此如果搜尋是應用程式的重要面向,請考慮如何吸引使用者。例如,您可以在使用者首次啟動應用程式時提供附註,說明如何啟用快速搜尋框的搜尋建議。

管理快速搜尋框建議捷徑

使用者從快速搜尋框選取的建議可以自動變成捷徑。這些建議是由系統從內容供應器複製,以便快速存取建議,無需重新查詢內容供應器。

根據預設,系統會為快速搜尋框擷取的所有建議啟用這項功能,但如果建議資料隨時間改變,您可以要求重新整理捷徑。舉例來說,如果您的建議參照動態資料 (例如聯絡人的在家狀態),請要求向使用者顯示時重新整理建議捷徑。方法是在建議資料表中加入 SUGGEST_COLUMN_SHORTCUT_ID。您可以使用這個資料欄,透過下列其中一種方式設定各項建議的捷徑行為:

  • 讓「快速搜尋框」重新查詢你的內容供應器,取得新版建議捷徑。

    SUGGEST_COLUMN_SHORTCUT_ID 欄中提供值,以便在每次顯示捷徑時重新查詢新版本建議。在重新整理查詢傳回之前,捷徑會快速顯示任何最近可用的資料,屆時系統會使用新資訊重新整理建議。系統會將重新整理查詢傳送至 URI 路徑為 SUGGEST_URI_PATH_SHORTCUT (而非 SUGGEST_URI_PATH_QUERY) 的內容供應器。

    使傳回的 Cursor 包含一項建議,其與原始建議使用相同的資料欄,或留空,表示該捷徑已失效。在這種情況下,建議會消失,且捷徑會移除。

    如果建議所參照的資料需要較長時間來重新整理 (例如網路重新整理),您也可以將 SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING 欄新增至建議表格,並將值設為 true,以在重新整理完成前顯示右側圖示的進度旋轉圖示。除 true 以外的任何值都不會顯示進度旋轉圖示。

  • 避免系統將建議複製到捷徑中。

    在「SUGGEST_COLUMN_SHORTCUT_ID」欄中提供 SUGGEST_NEVER_MAKE_SHORTCUT 的值,在此情況下,建議一律不會複製到捷徑。只有在您絕對不希望顯示先前複製的建議時,才需要使用此功能。如果您為資料欄提供一般值,則只有在重新整理查詢傳回結果時,建議捷徑才會出現。

  • 允許套用預設的快速鍵行為。

    請將每個不會變更且可儲存為捷徑的建議 SUGGEST_COLUMN_SHORTCUT_ID 留空。

如果建議都沒有改變,就不需要 SUGGEST_COLUMN_SHORTCUT_ID 欄。

關於「快速搜尋框」建議的排名

當您將應用程式的搜尋建議提供給快速搜尋框後,快速搜尋框的排名會決定向使用者顯示特定查詢建議的方式。這可能取決於有多少應用程式含有該查詢的結果,以及使用者與其他應用程式比較後選取結果的頻率。我們無法保證系統如何排序建議,也無法針對特定查詢顯示應用程式建議。一般來說,提供品質結果會使系統更有機會在顯眼的位置提供應用程式建議,而提供低品質建議的應用程式,也較有可能降低排名,或顯示為不顯示。