Cloudant 搜索字段在没有位置数据的情况下编制索引;无法运行短语查询



>我有以下Cloudant搜索索引

"indexes": {
"search-cloud": {
"analyzer": "standard",
"index": "function(doc) {
if (doc.name) {
index("keywords", doc.name);
index("name", doc.name, {
"store": true,
"index": false
});
}
if (doc.type === "file" && doc.keywords) {
index("keywords", doc.keywords);
}
}"
}
}

由于某种原因,当我搜索特定短语时,出现错误:

搜索失败:字段"关键字"已编制索引,没有位置数据;无法运行短语查询(术语=FIRSTWORD)

因此,如果我搜索第一个单词第二个单词,看起来我在第一个单词上遇到了错误。

注意:这不会发生在我所做的每个搜索短语上。

有谁知道为什么会这样?

doc.namedoc.keywords只是字符串。

doc.name通常是"2004/04/14 John Doe 1234 Document Folder">

doc.keywords通常是随机的,例如"再次测试">

我之所以在关键字索引下存储名称和关键字,是因为我希望任何人都可以通过键入字符串值来搜索关键字或名称。如果这不是最佳实践,请告诉我。

问题可能是您的某些文档包含带有字符串值的keywords字段,而其他文档包含具有不同类型(可能是数组)的keywords字段。我相信这种情况会导致您收到的错误。您能否仔细检查keywords字段的所有值实际上是字符串?

最新更新