This commit is contained in:
2026-05-07 01:40:58 +08:00
parent 093ce2e8bc
commit 549b706fcc
30 changed files with 2159 additions and 53 deletions
+17
View File
@@ -41,6 +41,8 @@ CREATE TABLE IF NOT EXISTS chunks (
embedding_status INTEGER NOT NULL DEFAULT 0,
embedding_ref JSONB,
embedding_model TEXT,
created_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT chunks_archive_uid_foreign
FOREIGN KEY (archive_uid)
REFERENCES archives (archive_uid)
@@ -53,9 +55,17 @@ SQL,
'CREATE INDEX IF NOT EXISTS archives_series_index ON archives (series)',
'CREATE INDEX IF NOT EXISTS archives_tags_gin_index ON archives USING GIN (tags)',
'CREATE INDEX IF NOT EXISTS archives_metadata_gin_index ON archives USING GIN (metadata)',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS embedding_error TEXT',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS embedding_updated_at TIMESTAMPTZ',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS search_index_status INTEGER NOT NULL DEFAULT 0',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS search_index_error TEXT',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS search_index_updated_at TIMESTAMPTZ',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS created_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP',
'ALTER TABLE chunks ADD COLUMN IF NOT EXISTS updated_time TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP',
'CREATE INDEX IF NOT EXISTS chunks_archive_uid_index ON chunks (archive_uid)',
'CREATE INDEX IF NOT EXISTS chunks_page_range_index ON chunks (archive_uid, page_start, page_end)',
'CREATE INDEX IF NOT EXISTS chunks_embedding_status_index ON chunks (embedding_status)',
'CREATE INDEX IF NOT EXISTS chunks_search_index_status_index ON chunks (search_index_status)',
<<<SQL
CREATE OR REPLACE FUNCTION set_updated_time()
RETURNS TRIGGER AS $$
@@ -66,11 +76,18 @@ END;
$$ LANGUAGE plpgsql
SQL,
'DROP TRIGGER IF EXISTS archives_set_updated_time ON archives',
'DROP TRIGGER IF EXISTS chunks_set_updated_time ON chunks',
<<<SQL
CREATE TRIGGER archives_set_updated_time
BEFORE UPDATE ON archives
FOR EACH ROW
EXECUTE FUNCTION set_updated_time()
SQL,
<<<SQL
CREATE TRIGGER chunks_set_updated_time
BEFORE UPDATE ON chunks
FOR EACH ROW
EXECUTE FUNCTION set_updated_time()
SQL,
];
+18
View File
@@ -0,0 +1,18 @@
#!/usr/bin/env php
<?php
use app\service\Search\OpenSearchChunkIndex;
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../support/bootstrap.php';
try {
$index = new OpenSearchChunkIndex();
$index->ensureExists();
echo 'OpenSearch chunk index initialized: ' . config('opensearch.indices.chunks', 'proofdb_chunks') . PHP_EOL;
echo 'Vector dimensions: ' . config('opensearch.vector.dimensions', 2048) . PHP_EOL;
} catch (Throwable $exception) {
fwrite(STDERR, $exception::class . ': ' . $exception->getMessage() . PHP_EOL);
exit(1);
}