feat: add FTS support for Collection::CreateIndex/DropIndex#445
Merged
Conversation
0386688 to
f6af38f
Compare
5541129 to
ec5a299
Compare
4b4aac2 to
74582b6
Compare
Enable dynamic creation and removal of FTS indexes on existing STRING columns through the standard CreateIndex/DropIndex API, matching the lifecycle model already used by vector and scalar (invert) indexes. Key changes: - New FtsIndexer class (fts_indexer.h/cc) encapsulating per-segment FTS RocksDB management: multi-field lifecycle, snapshot, insert, seal - New BlockType::FTS_INDEX with block_id-based directory naming (fts.<block_id>.rocksdb) for crash-safe snapshot-and-swap - Segment::create_fts_index builds FTS index on a snapshot copy by scanning forward store, then outputs new SegmentMeta + FtsIndexer for atomic reload (same pattern as create_scalar_index) - Segment::drop_fts_index snapshots, removes field CFs, outputs updated meta (or nullptr when last FTS field is removed) - Collection layer wires FTS into the existing task dispatch, version update, and reload loops alongside vector/invert paths - CreateIndex/DropIndex reject unsupported index types explicitly instead of falling through to the wrong branch
fix: address review comments for FTS CreateIndex/DropIndex
- Reject CreateIndex when column already has a different index type
(e.g. FTS on an INVERT-indexed column) at both Collection and
Segment layers
- Allow same-type different-params CreateIndex to rebuild the index
(remove old + create new + replay data), aligned with INVERT behavior
- Return OK when CreateIndex is called with identical params
- Rename operator[] to get() in both FtsIndexer and InvertedIndexer
- Add test cases: create→drop→create→drop cycle, and params-change
rebuild with case-sensitivity verification
74582b6 to
65f1cd7
Compare
feihongxu0824
approved these changes
Jun 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Enable dynamic creation and removal of FTS indexes on existing STRING columns through the standard CreateIndex/DropIndex API, matching the lifecycle model already used by vector and scalar (invert) indexes.
Key changes: