文档
指南
搜索相关性

默认情况下,Searchkit 提供了一个 Elasticsearch 查询,该查询旨在适用于大多数用例。但是,您可能希望自定义查询以提高搜索结果的相关性。

此示例显示了如何使用 getQuery 函数为给定请求自定义查询。

以下是如何使用 combined_fields 查询 (在新标签页中打开) 的示例。

const results = await apiClient.handleRequest(req.body, {
  getQuery: (query, search_attributes) => {
    return [
      {
        combined_fields: {
          query,
          fields: search_attributes,
        },
      },
    ];
  },
});

您还可以使用钩子自定义查询。例如,向默认查询添加重新评分查询。

在 api 文档中阅读有关 钩子 的更多信息。

请求钩子

请求钩子是在发送搜索请求到 Elasticsearch 之前和之后调用的函数。它们可用于在发送到 Elasticsearch 和 UI 之前修改搜索请求和响应。

请求钩子允许您向搜索请求和响应添加自定义逻辑。例如,您可以向默认查询添加重新评分查询,或向请求添加自定义查询。

重新评分查询示例

也可用于开源连接 学习排序插件 (在新标签页中打开)

  const results = await client.handleRequest(req.body, {
    hooks: {
      beforeSearch: (searchRequests) => {
        const uiRequest = searchRequests[0]
 
        return [
          {
            ...uiRequest,
            body: {
              ...uiRequest.body,
              rescore: {
                window_size: 100,
                query: {
                  rescore_query: {
                    match: {
                      plot: {
                        query: uiRequest.body.query,
                        operator: "and",
                      },
                    },
                  },
                  query_weight: 1,
                  rescore_query_weight: 10,
                }
              }
            }
          },
          searchRequests.slice(1, searchRequests.length)
        ]
        
      },
    }
  });

执行 KNN 搜索的示例

扩展查询以使用 KNN 搜索和文本搜索进行混合搜索的示例。检索 UI 中提供的搜索查询,并使用它从自定义图像搜索 API 中检索图像嵌入。然后扩展查询以使用 KNN 搜索(使用嵌入)和文本搜索进行混合搜索。

  const results = await client.handleRequest(req.body, {
    getKnnQuery(query, search_attributes, config) {
      return {
        field: 'dense-vector-field',
        k: 10,
        num_candidates: 100,
        // supported in latest version of Elasticsearch
        query_vector_builder: { 
          text_embedding: {
            model_id: 'cookie_model',
            model_text: query
          }
        }
      }
    }
  });

Apache 2.0 2024 © Joseph McElroy。
需要帮助?加入 Discord