文档
组件
搜索框

搜索框

搜索框小部件用于允许用户执行基于文本的查询。

Searchkit 设置

配置 search_attributes 以包含您要搜索的字段。

搜索属性定义了当用户执行搜索时应搜索哪些 Elasticsearch 字段。

搜索属性可以按如下方式配置

{ 
  search_settings: {
    search_attributes: [
      "description", 
      "actors", 
      { field: "title", weight: 3 }, 
      "released.year"
    ]
  }
}

以下配置将搜索 descriptionactors 和一个对象字段 released.year 字段,默认权重为 1。 title 字段的权重将是 actors 字段的 3 倍。

示例:调整有机查询

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

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

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

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

示例:向量搜索

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: 'msmarco-distilbert-base-tas-b',
            model_text: query
          }
        }
      }
    }
  });

用法

基础(React 示例)

import { InstantSearch, SearchBox } from 'react-instantsearch';
 
export function App() {
  return (
    <InstantSearch indexName="instant_search" searchClient={searchClient}>
      <SearchBox />
    </InstantSearch>
  );
}

文档


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