Мы используем PostgreSQL 11 и имеем поле jsonb со следующей структурой:
[
{
"name":"some name",
"items":[
{
"text": "item text"
},
{
"text": "something other"
}
]
}
]
Требуется запустить полнотекстовый поиск по полю и вернуть только родительские элементы + элементы, для которых предусмотрены критерии поиска.нашел.Например, если я ищу «какое-то имя», оно должно вернуть
{
"name": "some name"
}
. Если я ищу «текст элемента», желаемый результат будет
{
"name":"some name",
"items":[
{
"text": "item text"
}
]
}
or
{
"text": "item text"
}
.создали индекс для этого столбца:
create index idx_some_index on some_table
using gin ( to_tsvector('english', field_name) );
и могут выполнять запросы вроде:
select * from some_table
where to_tsvector(field_name)
@@ to_tsquery('some search text');
Но результат поиска возвращает все содержимое столбца.