Class: Mneme::Search
- Inherits:
-
Object
- Object
- Mneme::Search
- Defined in:
- lib/mneme/search.rb
Overview
Full-text search over event history using SQLite FTS5. Covers user messages, agent messages, and think events across all sessions.
The interface is intentionally abstract — callers receive Result structs and never touch FTS5 directly. A future semantic search backend (embeddings, BM25 + re-ranking) can replace the implementation without changing callers.
Defined Under Namespace
Classes: Result
Class Method Summary collapse
-
.query(terms, session_id: nil, limit: Anima::Settings.recall_max_results) ⇒ Array<Result>
Searches event history for the given terms.
Instance Method Summary collapse
-
#call ⇒ Array<Result>
Ranked by relevance (best first).
-
#initialize(terms, session_id: nil, limit: 5) ⇒ Search
constructor
A new instance of Search.
Constructor Details
#initialize(terms, session_id: nil, limit: 5) ⇒ Search
Returns a new instance of Search.
37 38 39 40 41 |
# File 'lib/mneme/search.rb', line 37 def initialize(terms, session_id: nil, limit: 5) @terms = sanitize_query(terms) @session_id = session_id @limit = limit end |
Class Method Details
.query(terms, session_id: nil, limit: Anima::Settings.recall_max_results) ⇒ Array<Result>
Searches event history for the given terms.
33 34 35 |
# File 'lib/mneme/search.rb', line 33 def self.query(terms, session_id: nil, limit: Anima::Settings.recall_max_results) new(terms, session_id: session_id, limit: limit).call end |
Instance Method Details
#call ⇒ Array<Result>
Returns ranked by relevance (best first).
44 45 46 47 48 49 |
# File 'lib/mneme/search.rb', line 44 def call return [] if @terms.blank? rows = execute_fts_query rows.map { |row| build_result(row) } end |