Рассмотрим следующие документы и считают, что создан индекс полнотекстового над следующими документами:Couchbase Полный поиск текста с помощью комбинации динамических полей и N1QL
{
email : "A",
"data" : {
"dynamic_property" : "ANY_TYPE",
"dynamic_property2" : {
"property" : "searchableValue"
},
"field" : "VALUE"
}
},
{
email : "B",
"data" : {
"other_dynamic_prop" : "test-searchableValue-2",
}
},
{
email : "A",
"data" : {
"thirdDynamicProp" : {
"childProp" : "this should be searchableValue!"
}
}
}
Цель: Создать N1QL запрос, который будет соответствовать все документы связанные с данными email
адрес И Свойство data
содержит заданную подстроку.
В основном следующие:
SELECT * FROM `bucket` WHERE `email` = 'A' AND `data` LIKE '%searchableValue%';
Ожидаемый результат является первым и вторым документом, поскольку соответствующих критериев. Но запрос не работает, потому что данные не текстовый тип, а Тип объекта. Если data
свойство было бы как:
{"data" : "this should be searchableValue!" }
Запрос будет возвращать ожидаемый результат.
Вопрос: Как создать такой запрос N1QL, который вернет ожидаемый результат?
Я знаю, что Couchbase не в состоянии сделать сравнение подстроки в тексте, но с использованием полнотекстового индекса должно быть возможным, так как Couchbase 4.5+
Все версии Couchbase начиная с версии 4.0 может ответить на ваш запрос. Как сказал @prasad, Couchbase 4.6 может ответить на ваш запрос, используя индекс TOKENS и слегка измененный запрос, используя ANY ... SATISFIES ... для соответствия индексу. – geraldss
Я использую Couchbase 4.5. Как вы это сделаете в версии 4.5 без использования полнотекстового индекса? –