>我有以下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.name
和doc.keywords
只是字符串。
doc.name
通常是"2004/04/14 John Doe 1234 Document Folder">
doc.keywords
通常是随机的,例如"再次测试">
我之所以在关键字索引下存储名称和关键字,是因为我希望任何人都可以通过键入字符串值来搜索关键字或名称。如果这不是最佳实践,请告诉我。
问题可能是您的某些文档包含带有字符串值的keywords
字段,而其他文档包含具有不同类型(可能是数组)的keywords
字段。我相信这种情况会导致您收到的错误。您能否仔细检查keywords
字段的所有值实际上是字符串?