如果我没理解错的话,
enable_nested_fields=true
,
会自行展平嵌套数组或对象数组。
const schema = {
name: 'published_section',
enable_nested_fields: true,
fields: [
{ name: 'projectId', type: 'string', facet: false },
{ name: 'name', type: 'string', facet: false, infix: true },
{ name: 'description', type: 'string', facet: false, infix: true },
{ name: 'request', type: 'object', facet: true, optinal: false },
{ name: 'responses', type: 'auto', facet: true, optinal: false },
{ name: 'createdAt', type: 'string', facet: false, sort: true },
],
default_sorting_field: 'createdAt',
};
request和response是嵌套数组和对象数组,所以当我上传文档时,typesense会搜索所有子字段。实际上Typesense在导入文档后创建了很多子字段。 这是否意味着当我在前端搜索深度嵌套的内容时,它会自动搜索,对吗?我只需要在前端传递请求和响应?
fields: [
{
facet: false,
index: true,
infix: false,
locale: '',
name: 'projectId',
optional: false,
sort: false,
type: 'string'
},
{
facet: false,
index: true,
infix: true,
locale: '',
name: 'name',
optional: false,
sort: false,
type: 'string'
},
{
facet: false,
index: true,
infix: true,
locale: '',
name: 'description',
optional: false,
sort: false,
type: 'string'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'request',
optional: false,
sort: false,
type: 'object'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'responses',
optional: true,
sort: false,
type: 'auto'
},
{
facet: false,
index: true,
infix: false,
locale: '',
name: 'createdAt',
optional: false,
sort: true,
type: 'string'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'responses',
optional: true,
sort: false,
type: 'object[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'responses.statusCode',
optional: true,
sort: false,
type: 'int64[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'responses.raw',
optional: true,
sort: false,
type: 'string[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'responses.body.valueType',
optional: true,
sort: false,
type: 'string[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'request.body._id',
optional: true,
sort: false,
type: 'string[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'request.body.isRequired',
optional: true,
sort: false,
type: 'bool[]'
},
{
facet: true,
index: true,
infix: false,
locale: '',
name: 'request.body.name',
optional: true,
sort: false,
type: 'string[]'
},
这是模式在导入文档后的样子
const { data, isLoading } = useSearch({
query: `?q=${query}&query_by=name,description,request,responses`,
enabled: !!query,
});
这是前端。
事实是,当我搜索时,它不是那样工作的。我只想验证我是否正确理解了这个概念。它仍然只搜索名称和描述
我应该将所有子字段添加到 query_by 吗?