Как интерпретировать и получить доступ к цветору? - PullRequest
0 голосов
/ 05 февраля 2020

Тип данных tsvector предназначен для хранения предварительно обработанных документов, а также тип tsquery для представления обработанных запросов

Но иногда TSVECTOR представляет собой массив слов, иногда мешок с word-position, иногда сложный вектор с позициями и весами ... Могу ли я получить доступ к отдельным частям его структуры данных? Пример:

CREATE TABLE t ( tsv TSVECTOR );
INSERT INTO t VALUES 
  ('foo phrase'::TSVECTOR),
  ('second foo phrase'::TSVECTOR),
  ('third foo phrase'::TSVECTOR);

SELECT tsv FROM t WHERE "'foo' is the first word" -- how to do it??

Представляя, что TSVECTOR имеет те же операторы доступа к структуре JSONb: мы можем получить доступ к его структуре с помощью WHERE tsv->'foo'->0=1.

В реальной жизни: я не вижу ( здесь в справочнике по поиску ) tsquery или прямой оператор, который это делает. И я не вижу ( здесь, в Общем руководстве ) полная документация TSVECTOR с техническим описанием его реальной и полной внутренней структуры .

1 Ответ

1 голос
/ 06 февраля 2020

Нет, вы не можете, это не то, для чего он построен.

Вам нужно написать расширение PostgreSQL в C, чтобы получить доступ к внутренней структуре типа данных. Громоздкая альтернатива - разобрать текстовое представление.

...