Могу ли я вернуть данные документа после матча FTS? - PullRequest
0 голосов
/ 25 июня 2018

Предположим, у меня есть эти данные:

{
   "test": "Testing1234" 
   "false": "Falsify"
}

И затем, используя curl, я пишу этот запрос:

{"explain": true, "fields": [ "*" ], "highlight": {}, "query": { "query": "Testing"}}

Я получаю ответ от couchbase.Это включает в себя идентификатор документа, а также объект locations, который возвращает сведения о том, где мой запрос соответствовал тексту в документе, включая родительский объект.Вся полезная информация.

Однако я не получаю никакого дополнительного контекста.Например, скажем, у меня есть 100 документов с "test": "TestingXXXX", где XXXX - случайная строка.Мой поиск не даст мне XXXX.Это также не дает мне никакого способа прочитать дополнительные поля в том же объекте (например, если я хотел получить свойство "false").Я просто получу 100 различных идентификаторов документов для запроса.Таким образом, это технически достаточно информации для получения всей необходимой информации, однако это приводит к тому, что я делаю 100 различных запросов на основе проанализированной информации из исходного ответа.

Есть ли способ вернуть контекст с совпадениями FTS при использованииAPI REST, не запрашивая каждый соответствующий документ?

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Вы можете получить полные объекты, выполнив запрос FTS из N1QL с помощью функции CURL (), а затем объедините его с самими объектами.

https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/curl.html

Вашзапрос будет иметь примерно такую ​​форму:

SELECT * 
FROM yourTable
USE KEYS CURL(ftsURL, ftsQuery, ...)

Вам нужно будет обернуть функцию CURL в некоторые функции преобразования, чтобы превратить результат FTS в массив идентификаторов.

Я понимаю, что этодовольно схематично, так как у меня нет полного примера под рукой.Но выполните следующие действия:

  1. Выполните запрос FTS с помощью CURL () в N1QL.
  2. Преобразуйте результаты FTS в массив идентификаторов.
  3. Embedзапрос массива идентификаторов в запрос SELECT с помощью USE KEYS.
0 голосов
/ 25 июня 2018

Я понял это.Это не проблема с запросом.Поля не индексируются.Чтобы исправить это, я изменил настройку индекса «Store Dynamic Fields» на «True».Тем не менее, выделение вернуло много дополнительных деталей, и я уверен, что это также немного увеличивает время запроса.Документация couchbase, похоже, подразумевает, что она используется только для отладки.Таким образом, я хотел бы оставить это открытым, если у кого-то есть дальнейшие предложения.

...