typesense - 索引嵌套字段

问题描述 投票:0回答:1

如果我没理解错的话,

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 吗?

javascript node.js search typesense
1个回答
0
投票

当您在

query_by
中指定嵌套字段名称时,应自动搜索所有子字段。如果这没有发生,那可能是一个错误。

请使用您在此问题中分享的信息在 issue tracker 中打开一个问题。

© www.soinside.com 2019 - 2024. All rights reserved.