全部產品
Search
文件中心

OpenSearch:熱搜和底紋

更新時間:Jul 13, 2024

什麼是熱搜和底紋

熱搜和底紋是一個完整搜尋引擎必備的準系統,通常佔據著搜尋方塊入口的重要位置,提供不可或缺的業務價值。下圖是看一個典型電商平台的熱搜和底紋的位置。

1

熱搜和底紋處於搜尋引擎整個工作流程的最上遊,為搜尋最佳化起鋪墊作用,可以大大降低query理解、排序、營運幹預等環節的調優難度,並且結合營運策略可以有比較大的發揮空間。

從使用者的角度來看,熱搜底紋一般可以滿足如下的需求:

說明

  1. 我想隨便逛逛,不知道搜什麼好,能不能給我推薦一些優質的查詢詞? 

  2. 我想知道大家都搜了些什麼,隨大流不會錯 

  3. 最好能結合我的興趣推薦query,也要有多樣性,我既想看感興趣的內容,又想探索一些興趣之外的內容

從營運者的角度,熱搜和底紋可以提供這樣的價值:

說明
  1. 我想知道哪些query被搜得最多,熱門query是使用者興趣的風向標,通過分析熱門query可以把握使用者的興趣走向,對制定營運策略提供決策依據 

  2. 我想給使用者推薦一些優質query,在使用者有輸入的情況下,下拉提示引導使用者意圖,但是在沒有任何輸入的時候,如何推薦優質query呢? 

  3. 如果給使用者推薦熱門query,不能總是固定給出最熱的那幾個query,需要考慮到多樣性,一方面兼顧使用者體驗,另一方面需要給部分次熱門query曝光機會

  4. 通過分析使用者的行為,結合使用者的興趣來推薦query,既兼顧使用者體驗,又可以有的放矢的提升營運目標

【控制台熱搜榜】和【熱搜推薦介面】有以下幾點區別:

說明
  1. 【熱搜推薦介面】只統計最近14天的;

  2. 【熱搜推薦介面】只統計raw_query,【控制台熱搜榜】除了統計raw_query還會統計default索引上的查詢詞;

  3. 【熱搜推薦介面】會過濾掉搜尋無結果的query,【控制台熱搜榜】則不會;

溫馨提示

  • 目前熱搜與底紋演算法模型需要通過統計歷史搜尋請求中設為 raw_query 的查詢詞來進行訓練,若歷史搜尋請求沒有出現過raw_query,模型可能會建立失敗。

  • 獨立query:訓練晉陞條件中的raw_query是搜尋請求時需要攜帶的參數,並且要求是獨立的、有召回結果的、非重複的query查詢詞

  • 最多各建立3個熱搜、底紋模型;

  • 預設顯示熱搜榜資料條數是10000條,可根據實際情況進行修改,但最低不少於100條。

  • 目前的演算法模型只依賴搜尋日誌,按照一定演算法做統計,暫不支援設定其他訓練目標,因此僅需建立模型一次。

  • 系統接收到模型建立請求後,會立刻開始訓練模型。

  • 一旦建立模型成功,系統會每天自動重新訓練模型,不再需要人為幹預。

  • 熱搜/底紋模型開啟並且已經訓練後,可查詢半年內任意一個時間段的榜單資料,預設為近14天的榜單資料.

建立熱搜或底紋模型

API/SDK建立熱搜和底紋模型

管控SDK依賴:

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-opensearch</artifactId>
    <version>0.7.0</version>
</dependency>
<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-core</artifactId>
    <version>4.5.0</version>
</dependency>

Java SDK Demo

import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.FormatType;
import com.aliyuncs.http.HttpResponse;
import com.aliyuncs.opensearch.model.v20171225.*;
import com.aliyuncs.profile.DefaultProfile;
public class CreateModel {
    public static void main(String[] args) {
        DefaultProfile profile = DefaultProfile.getProfile("cn-beijing", "<accessKeyId>", "<accessSecret>");
        IAcsClient client = new DefaultAcsClient(profile);
        CreateModelRequest request = new CreateModelRequest();
        request.setAppGroupIdentity("app_name");
 //type為演算法類型:熱搜設定為hot,底紋設定為hint;modelName為模型名稱:自訂,由英文數字、字母、底線組成,非純數字,不超過30個字元
        String content = "{\"type\": \"hot\",\"name\": \"model_name\"}";
        request.setHttpContent(content.getBytes(), "UTF-8", FormatType.JSON);
        try {
            HttpResponse response = client.doAction(request);
            System.out.println(response.getHttpContentString());
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
    }
}

頁面建立模型

1、在搜尋引導->熱搜與底紋頁面,點擊建立按鈕建立熱搜或底紋模型:

建立模型

2、填寫名稱選擇模型類型(熱搜/底紋模型),填寫過濾條件(非必選):

配置模型

參數名稱

說明

過濾條件

需填寫OpenSearch搜尋請求參數的判斷條件,該過濾條件用於篩選合格歷史搜尋字詞。支援如下格式:OpenSearch請求參數 biz_type(<、>、<=、>=、=、!=)數值,暫僅支援biz_type和user_id參數。多個過濾條件之間為AND關係,必須要使用英文逗號(,)分隔,表示且關係(暫不支援或關係)。例如當過濾條件為 user_id=1,biz_type=1 時,則只能選取符合該條件的記錄。更多搜尋請求參數請參考搜尋處理

3、在熱搜與底紋頁面的列表頁中找到剛建立的狀態為“待訓練”的模型,點擊訓練:訓練模型4、訓練完成後可通過熱搜效果預覽查看效果:

熱搜效果預覽001

底紋效果預覽002

注意

  • 熱搜的效果預覽,彈框每次返回的10個推薦的熱搜詞,最多20組推薦的熱搜詞。

  • 底紋的效果預覽,彈框每次返回1個底紋詞,最多30組推薦的底紋詞。

熱搜與底紋頁面介紹

熱搜與底紋列表介紹

可通過搜尋引導->熱搜與底紋下查看,模型名稱、模型類型、建立時間、模型狀態、最後訓練開始時間、最新版本狀態和操作資訊。使用者可以根據自身需求設定預設模型,如果參數中沒有設定模型名稱,則訪問預設模型。

image

熱搜與底紋 詳情頁介紹

其基本資料包含建立時間、模型狀態、最後訓練開始時間、最新版本狀態。也可在訓練歷史下查看模型版本、版本狀態、訓練開始時間、訓練結束時間等資訊。模型訓練後為兩種狀態訓練成功和訓練失敗

訓連失敗問題查看:

可點擊詳情進入詳情頁查看:可以通過異常報告查看失敗的原因,在升級條件下查看所需條件。

image

個人化配置:

黑白名單配置:使用者可根據自身業務的需求對模型進行黑白名單配置在模型詳情下配置資訊處點擊配置

image

SDKSDK擷取熱搜/底紋結果

在產品中整合熱搜和底紋功能,可以通過API/SDK來調用熱搜底紋的推薦結果,熱搜和底紋API文檔。SDK Demo請參考下文。

熱搜功能預設返回10個query,底紋功能預設返回3個query,用於在搜尋方塊中輪播。

溫馨提示:

  • 目前沒有擷取演算法任務執行狀態的介面,需要使用者調用API/SDK根據是否有結果來判斷是否可使用。

  • 一旦調用建立模型成功後,後續每日系統內部會自動執行演算法訓練任務,使用者每日通過API/SDK擷取更新的熱搜詞即可。

  • 目前通過SDK調用熱搜和底紋介面時,hit參數(召回個數)熱搜最大是30,底紋最大是10。

  • 熱詞榜單API:ListStatisticLogs

流量SDK依賴:

<dependency>
    <groupId>com.aliyun.opensearch</groupId>
    <artifactId>aliyun-sdk-opensearch</artifactId>
    <version>3.5.0</version>
</dependency>

Java SDK Demo

import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.aliyun.opensearch.OpenSearchClient;
import com.aliyun.opensearch.sdk.generated.OpenSearch;
import com.aliyun.opensearch.sdk.generated.commons.OpenSearchClientException;
public class Hot {
    private static final String accesskey = "替換為accesskey";
    private static final String secret = "替換為secret";
    private static final String host = "替換為endpoint, 例如:http://opensearch-cn-hangzhou.aliyuncs.com";
    private static final String appName = "替換為opensearch應用程式名稱";
    private static final String HOT_API_PATH = "/apps/{app_name}/actions/hot";
    public static void main(String[] args) {
        OpenSearch openSearch = new OpenSearch(accesskey, secret, host);
        // Create OpenSearchClient
        OpenSearchClient client = new OpenSearchClient(openSearch);
        String requestPath = HOT_API_PATH.replaceAll(("\\{app_name\\}"), appName);
        Map<String, String> params = new HashMap<>();
        params.put("model_name", "your_model_name");//設定模型名稱
        params.put("hit", "20");//設定查詢的熱搜詞資料條數
        try {
            String response = client.call(requestPath, params, OpenSearchClient.METHOD_GET);
            System.out.println(JSON.toJSONString(response));
        } catch (OpenSearchClientException e) {
            e.printStackTrace();
        }
    }
}

效果最佳化

行為資料

基於統計搜尋日誌的熱搜/底紋結果可以滿足冷啟動階段的需求,在這個功能開始發揮作用後,建議關聯熱搜/底紋的使用者點擊事件,系統內部通過採集行為資料(from_request_iduser_id)來進一步最佳化效果,採集了行為資料有如下幾個收益:

說明

  1. 可以統計得到各項指標,諸如引導搜尋的pv、uv、無結果率等,用來衡量這個功能的使用效果,為後續的改進提供依據。 

  2. 可以分析使用者群的興趣走向,為制定營運策略提供依據。 

  3. 可以採用智能化的手段來推薦query,通過使用者的點擊行為對資料進行標註,可能根據不同的最佳化目標來訓練模型(預設按點擊率最佳化),通過模型來推薦query,具備較強的泛化能力。 

熱搜/底紋引導搜尋流量

API/SDK擷取到的熱搜/底紋結果中會返回一個request_id, 用於唯一標識這一次請求。通常,如果產品中整合了熱搜/底紋結果,當終端使用者點擊了熱搜詞或底紋詞後,便會以該熱搜詞或底紋詞作為搜尋字詞觸發一次搜尋請求,通過在搜尋請求中將from_request_id參數設定為熱搜/底紋結果返回的request_id,就可以關聯這一次使用者點擊行為,後台通過搜尋日誌分析和統計了這些點擊行為,就可以在業務營運報表中看到由熱搜/底紋引導的搜尋流量指標。如果在搜尋請求中設定了user_id參數,業務營運報表中還可以看到熱搜/底紋引導的搜尋UV指標。

溫馨提示:

  • 由於搜尋的翻頁請求也會被認為是獨立的搜尋PV,所以對於熱搜/底紋引導的搜尋請求翻頁時候,也同樣要設定from_request_id參數。

  • 搜尋請求的參數詳情,請查閱from_request_iduser_id的參數說明。

業務營運報表

介面介紹

熱搜

可以通過【搜尋演算法中心-->搜尋引導—->熱搜與底紋】,“查看指標”進入熱搜的營運報表;000000000000

也可以直接在“統計報表—->熱搜報表”裡查:

熱搜報表

底紋

可以通過【搜尋演算法中心-->搜尋引導—->熱搜與底紋】,“查看指標”進入底紋的營運報表;66666666666

也可以直接在“統計報表—->底紋報表”裡查:

底紋報表

注意

  • 熱搜報表對應指標介紹可點擊此處進行查看。

  • 底紋報表對應指標介紹可點擊此處進行查看。