搜索框
搜索框小部件用于允许用户执行基于文本的查询。
Searchkit 设置
配置 search_attributes
以包含您要搜索的字段。
搜索属性定义了当用户执行搜索时应搜索哪些 Elasticsearch 字段。
搜索属性可以按如下方式配置
{
search_settings: {
search_attributes: [
"description",
"actors",
{ field: "title", weight: 3 },
"released.year"
]
}
}
以下配置将搜索 description
、actors
和一个对象字段 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>
);
}