| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- -- 文档块表:存储文档的结构化内容(参考飞书Block设计)
- -- 核心设计:块内容由 elements 数组(TextElement)组成,实体作为元素嵌入
- CREATE TABLE IF NOT EXISTS document_blocks (
- id VARCHAR(64) PRIMARY KEY,
- document_id VARCHAR(64) NOT NULL,
- parent_id VARCHAR(64),
- children JSONB,
- block_index INTEGER NOT NULL,
- block_type VARCHAR(32) NOT NULL,
- elements JSONB,
- style JSONB,
- metadata JSONB,
- create_by VARCHAR(64),
- create_by_name VARCHAR(128),
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(64),
- update_by_name VARCHAR(128),
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 索引
- CREATE INDEX IF NOT EXISTS idx_document_blocks_document_id ON document_blocks(document_id);
- CREATE INDEX IF NOT EXISTS idx_document_blocks_parent_id ON document_blocks(parent_id);
- CREATE INDEX IF NOT EXISTS idx_document_blocks_block_type ON document_blocks(block_type);
- -- 全文搜索索引(对elements中的文本内容)
- CREATE INDEX IF NOT EXISTS idx_document_blocks_elements_gin ON document_blocks USING GIN (elements jsonb_path_ops);
- -- 文档实体标注表:存储文档中的实体/要素标记
- CREATE TABLE IF NOT EXISTS document_entities (
- id VARCHAR(64) PRIMARY KEY,
- document_id VARCHAR(64) NOT NULL,
- block_id VARCHAR(64),
- name VARCHAR(512) NOT NULL,
- entity_type VARCHAR(32) NOT NULL,
- value TEXT,
- block_char_start INTEGER,
- block_char_end INTEGER,
- global_char_start INTEGER,
- global_char_end INTEGER,
- anchor_before VARCHAR(100),
- anchor_after VARCHAR(100),
- source VARCHAR(16) DEFAULT 'auto',
- confidence DECIMAL(5,4),
- confirmed BOOLEAN DEFAULT FALSE,
- graph_node_id VARCHAR(64),
- metadata JSONB,
- create_by VARCHAR(64),
- create_by_name VARCHAR(128),
- create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- update_by VARCHAR(64),
- update_by_name VARCHAR(128),
- update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- 索引
- CREATE INDEX IF NOT EXISTS idx_document_entities_document_id ON document_entities(document_id);
- CREATE INDEX IF NOT EXISTS idx_document_entities_block_id ON document_entities(block_id);
- CREATE INDEX IF NOT EXISTS idx_document_entities_type ON document_entities(entity_type);
- CREATE INDEX IF NOT EXISTS idx_document_entities_name ON document_entities(name);
- CREATE INDEX IF NOT EXISTS idx_document_entities_global_char ON document_entities(document_id, global_char_start, global_char_end);
- CREATE INDEX IF NOT EXISTS idx_document_entities_graph_node ON document_entities(graph_node_id);
- -- 注释
- COMMENT ON TABLE document_blocks IS '文档块 - 存储文档的结构化内容块';
- COMMENT ON TABLE document_entities IS '文档实体 - 存储文档中标记的实体/要素';
- COMMENT ON COLUMN document_blocks.block_type IS '块类型: heading1/heading2/heading3/paragraph/table/list/image/quote';
- COMMENT ON COLUMN document_entities.entity_type IS '实体类型: PERSON/ORG/LOC/DATE/NUMBER/MONEY/CONCEPT/DATA/DEVICE/TERM';
- COMMENT ON COLUMN document_entities.source IS '来源: auto=自动识别, manual=手动标注';
|