假设我有此数据:
{
"test": "Testing1234"
"false": "Falsify"
}
然后使用curl编写此查询:
{"explain": true, "fields": [ "*" ], "highlight": {}, "query": { "query": "Testing"}}
我从长沙发基地得到了回应。这包括文档ID,以及一个locations
对象,该对象返回有关我的查询在文档中匹配文本位置的详细信息,包括父对象。所有有用的信息。
但是,我没有收到任何其他上下文。例如,假设我有100个文档为"test": "TestingXXXX"
,其中XXXX是随机字符串。我的搜索不会为我提供XXXX。它也没有提供任何方式读取同一对象中的其他字段(例如,如果我想获取“ false”属性)。我将简单地获取100个不同的文档ID进行查询。因此,从技术上讲,它是足够的信息,可以获取所有所需的信息,但是,这导致我根据原始响应中的解析信息提出了100个不同的请求。
使用REST API时,是否有任何方法可以返回与FTS匹配的上下文,而不必简单地查询每个匹配的文档?
答案 0 :(得分:1)
您可以通过使用CURL()函数从N1QL内部发出FTS查询,然后将其与对象本身结合起来,来获取完整的对象。
https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/curl.html
您的查询大致具有以下形式:
SELECT *
FROM yourTable
USE KEYS CURL(ftsURL, ftsQuery, ...)
您需要将CURL函数包装在某些转换函数中,以将FTS结果转换为ID数组。
由于我没有完整的示例方便,因此我意识到这是非常示意性的。但是请按照以下步骤进行操作:
答案 1 :(得分:0)
我知道了。查询不是问题。该字段没有被索引。要修复,我将索引设置“存储动态字段”更改为“真”。也就是说,突出显示确实返回了很多额外的细节,而且我敢肯定,这也会大大增加查询时间。该couchbase文档似乎暗示它仅用于调试。因此,在有人提出进一步建议的情况下,我谨此公开。