Search Cloudant搜索:使用count方面的条件是什么?

Search Cloudant搜索:使用count方面的条件是什么?,search,cloudant,faceted-search,Search,Cloudant,Faceted Search,我正在尝试使用Cloudant建立搜索索引,但我发现非常混乱。它说: 刻面 为了使用facet,索引中的所有文档必须包括启用facet的所有字段。如果您的文档不包含所有字段,您将收到一个错误的\u请求错误,原因如下:“dim field\u name不存在” 如果每个文档不包含facet的所有字段,建议为每个字段创建单独的索引。如果不为每个字段创建单独的索引,则必须仅包含包含所有字段的文档。使用单个if语句验证每个文档中是否存在字段 计数 count facet语法获取字段列表,并返回每个命名字

我正在尝试使用Cloudant建立搜索索引,但我发现非常混乱。它说:

刻面 为了使用facet,索引中的所有文档必须包括启用facet的所有字段。如果您的文档不包含所有字段,您将收到一个错误的\u请求错误,原因如下:“dim field\u name不存在”

如果每个文档不包含facet的所有字段,建议为每个字段创建单独的索引。如果不为每个字段创建单独的索引,则必须仅包含包含所有字段的文档。使用单个if语句验证每个文档中是否存在字段

计数 count facet语法获取字段列表,并返回每个命名字段的每个唯一值的查询结果数

仅当索引值为字符串时,计数操作才起作用。索引值不能是混合类型。例如,如果索引了100个字符串和一个数字,则该索引不能用于计数操作。您可以使用typeof运算符检查类型,并使用parseInt、parseFloat和.toString()函数进行转换

具体来说,当“索引中的所有文档都包含启用了镶嵌面的所有字段”时,这意味着什么

例如,如果我的数据库由以下文档组成:

{
  "_id": "mydoc"
  "subjects": [ "subject A", "subject B" ]
}
我写了一个搜索索引,如下所示:

function (doc) {
  for(var i=0; i < doc.subjects.length; i++)
    index("hasSubject", doc.subjects[i], {facet: true});
}
function (doc) {
  if (doc.subjects) {
    for(var i=0; i < doc.subjects.length; i++) {
      if (typeof doc.subjects[i] == "string") {
        index("hasSubject", doc.subjects[i], {facet: true});
      }
    }
  }
}

这会不会突然让它好起来…?

因此新文档位于;然而,关于刻面的条目是相同的。所以没什么大不了的

不过,为了回答您的问题,我认为文档所说的是,数据库中的所有JSON文档都必须包含
subjects
字段,这就是您在示例中声明的内容

<>所以我也会考虑定义你的搜索索引,比如:

function (doc) {
  for(var i=0; i < doc.subjects.length; i++)
    index("hasSubject", doc.subjects[i], {facet: true});
}
function (doc) {
  if (doc.subjects) {
    for(var i=0; i < doc.subjects.length; i++) {
      if (typeof doc.subjects[i] == "string") {
        index("hasSubject", doc.subjects[i], {facet: true});
      }
    }
  }
}

我认为这会突然使您的方面不正常。

因此,新文档位于;然而,关于刻面的条目是相同的。所以没什么大不了的

不过,为了回答您的问题,我认为文档所说的是,数据库中的所有JSON文档都必须包含
subjects
字段,这就是您在示例中声明的内容

<>所以我也会考虑定义你的搜索索引,比如:

function (doc) {
  for(var i=0; i < doc.subjects.length; i++)
    index("hasSubject", doc.subjects[i], {facet: true});
}
function (doc) {
  if (doc.subjects) {
    for(var i=0; i < doc.subjects.length; i++) {
      if (typeof doc.subjects[i] == "string") {
        index("hasSubject", doc.subjects[i], {facet: true});
      }
    }
  }
}

我想这会让你的脸突然变得不好。

嗯。。。这是有道理的!所以它只是针对索引
doc.field
field
未定义的情况进行了规定?是的。通常,如果要在字段上刻面,则需要确保这些字段存在且未定义。我想我们都是这么说的。嗯。。。这是有道理的!所以它只是针对索引
doc.field
field
未定义的情况进行了规定?是的。通常,如果要在字段上刻面,则需要确保这些字段存在且未定义。我想我们都是这么说的。