Class InMemorySearchStore
java.lang.Object
io.fluxzero.sdk.persisting.search.client.InMemorySearchStore
- All Implemented Interfaces:
SearchClient, AutoCloseable
In-memory implementation of the
SearchClient, intended for local testing and development.
Stores all indexed documents in memory, with support for basic search, statistics, and deletion logic. Ideal for use in test scenarios where a real Fluxzero Runtime connection is not available or needed.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceResolves the exact current-document collection for model IDs.static interfaceResolves explicitly placed current child edges for root models.static interfaceResolves target model IDs from related matches at the current relationship boundary. -
Field Summary
FieldsModifier and TypeFieldDescription -
Constructor Summary
ConstructorsConstructorDescriptionInMemorySearchStore(Duration retentionTime) InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver) InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver, InMemorySearchStore.ModelGraphResolver modelGraphResolver) InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver, InMemorySearchStore.ModelGraphResolver modelGraphResolver, InMemorySearchStore.ModelDocumentCollectionResolver modelDocumentCollectionResolver) -
Method Summary
Modifier and TypeMethodDescriptionadoptModelMigration(io.fluxzero.common.api.search.AdoptModelMigration request) Atomically adopts a previously inspected and application-verified staged Model document while retaining the accepted normalized source until an ordinary Model write ends legacy-write coexistence.protected static StringasIdentifier(String collection, String documentId) protected io.fluxzero.common.api.SerializedMessageasSerializedMessage(io.fluxzero.common.api.search.SerializedDocument document) bulkUpdate(Collection<io.fluxzero.common.api.search.DocumentUpdate> updates, io.fluxzero.common.Guarantee guarantee) Performs a batch update on a set of documents.voidclose()Closes any underlying resources.createAuditTrail(io.fluxzero.common.api.search.CreateAuditTrail request) Configures Fluxzero to use a search collection as a searchable audit trail.delete(io.fluxzero.common.api.search.SearchQuery query, io.fluxzero.common.Guarantee guarantee, int batchSize) Deletes documents matching a given query using the requested batch size.Deletes a document by its unique id and collection name.deleteCollection(String collection, io.fluxzero.common.Guarantee guarantee) Deletes an entire document collection and all its contents.booleandocumentExists(io.fluxzero.common.api.search.HasDocument r) Checks whether a document with the given criteria exists.Optional<io.fluxzero.common.api.search.SerializedDocument> fetch(io.fluxzero.common.api.search.GetDocument r) Fetches a single serialized document matching the given request.Collection<io.fluxzero.common.api.search.SerializedDocument> fetch(io.fluxzero.common.api.search.GetDocuments request) Fetches a collection of serialized documents that match the given request.List<io.fluxzero.common.api.search.FacetStats> fetchFacetStats(io.fluxzero.common.api.search.SearchQuery query) Retrieves facet statistics (i.e., value counts) for a given query.io.fluxzero.common.api.search.SearchHistogramfetchHistogram(io.fluxzero.common.api.search.GetSearchHistogram request) Fetches a histogram (bucketed time-series view) for documents matching the query.io.fluxzero.common.api.search.GetDocumentResultfetchModelDocument(io.fluxzero.common.api.search.GetDocument request) Fetches a direct Model document together with the durable head written by the same materialization transaction.List<io.fluxzero.common.api.search.DocumentStats> fetchStatistics(io.fluxzero.common.api.search.SearchQuery query, List<String> fields, List<String> groupBy) Retrieves search statistics (counts, averages, etc.) over matching documents.io.fluxzero.common.api.search.GetModelMigrationResultgetModelMigration(io.fluxzero.common.api.search.GetModelMigration request) Retrieves the production and staged direct documents used to verify one Model migration.io.fluxzero.common.api.search.GetModelMigrationsResultgetModelMigrations(io.fluxzero.common.api.search.GetModelMigrations request) Retrieves a bounded batch of staged direct Model migrations.List<io.fluxzero.common.api.search.SearchCollection> Retrieves existing regular search collections and audit trails.index(List<io.fluxzero.common.api.search.SerializedDocument> documents, io.fluxzero.common.Guarantee guarantee, boolean ifNotExists) Indexes a list of serialized documents into the search engine.voidmaterializeModelCommit(io.fluxzero.common.api.modeling.CommitModels commit, List<io.fluxzero.common.api.modeling.ModelUpdate> assignedUpdates, Set<String> excludedModelIds) voidmaterializeModelGraphProjection(io.fluxzero.common.api.modeling.ModelGraphProjectionConfiguration configuration, Set<String> rootIds, long stateIndex, boolean rebuild) Synchronously materializes affected roots for the SDK-only graph-projection worker.move(io.fluxzero.common.api.search.SearchQuery query, String targetCollection, io.fluxzero.common.Guarantee guarantee) Moves documents matching a given query to the given target collection.move(String documentId, String collection, String targetCollection, io.fluxzero.common.Guarantee guarantee) Moves a document to another collection.protected voidnotifyMonitors(String collection, List<io.fluxzero.common.api.SerializedMessage> messages) Stream<io.fluxzero.common.api.SerializedMessage> openStream(String collection, Long lastIndex, int maxSize) Stream<io.fluxzero.common.api.SerializedMessage> openStream(String collection, Long lastIndex, int maxSize, boolean includeDocumentTombstones) prepareModelCommit(io.fluxzero.common.api.modeling.CommitModels commit, List<io.fluxzero.common.api.modeling.ModelUpdate> assignedUpdates, Set<String> excludedModelIds) Materializes direct Model documents and returns their deferred local-monitor publication.prepareModelGraphProjection(io.fluxzero.common.api.modeling.ModelGraphProjectionConfiguration configuration, Set<String> rootIds, long stateIndex, boolean rebuild) Materializes graph documents and returns their deferred local-monitor publication.protected voidpurgeExpiredMessages(Duration messageExpiration) io.fluxzero.common.RegistrationregisterMonitor(String collection, Consumer<List<io.fluxzero.common.api.SerializedMessage>> monitor) io.fluxzero.common.RegistrationregisterMonitor(BiConsumer<String, List<io.fluxzero.common.api.SerializedMessage>> monitor) rewriteModelGraphDocument(io.fluxzero.common.api.search.SerializedDocument replacement, String expectedManifest, io.fluxzero.common.Guarantee guarantee) Conditionally replaces one materialized model-graph document while its manifest still matches the handled version.search(io.fluxzero.common.api.search.SearchDocuments searchDocuments, int fetchSize) Executes a streaming search query using the given criteria and fetch size.searchModelGraph(io.fluxzero.common.api.search.SearchModelGraphDocuments request, int fetchSize) Executes a current-state model search and composes each matching root's explicitly placed child graph.searchModels(io.fluxzero.common.api.search.SearchModelDocuments request, int fetchSize) Executes a bounded current-state search across independent model relationships.protected voidstoreMessages(Map<String, io.fluxzero.common.api.search.SerializedDocument> updates) voidtruncateCollection(String collection) Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface SearchClient
delete, deleteCollection, fetchFacetStatsAsync, fetchHistogramAsync, fetchStatisticsAsync, searchAsync, searchModelGraphAsync, searchModelsAsync
-
Field Details
-
identifier
-
-
Constructor Details
-
InMemorySearchStore
-
InMemorySearchStore
public InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver) -
InMemorySearchStore
public InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver, InMemorySearchStore.ModelGraphResolver modelGraphResolver) -
InMemorySearchStore
public InMemorySearchStore(Duration retentionTime, InMemorySearchStore.ModelRelationResolver modelRelationResolver, InMemorySearchStore.ModelGraphResolver modelGraphResolver, InMemorySearchStore.ModelDocumentCollectionResolver modelDocumentCollectionResolver)
-
-
Method Details
-
asIdentifier
-
getSearchCollections
Description copied from interface:SearchClientRetrieves existing regular search collections and audit trails.Implementations predating this operation may throw
UnsupportedOperationException.- Specified by:
getSearchCollectionsin interfaceSearchClient- Returns:
- the available collections with their storage types, in deterministic order
-
index
public CompletableFuture<Void> index(List<io.fluxzero.common.api.search.SerializedDocument> documents, io.fluxzero.common.Guarantee guarantee, boolean ifNotExists) Description copied from interface:SearchClientIndexes a list of serialized documents into the search engine.- Specified by:
indexin interfaceSearchClient- Parameters:
documents- the documents to indexguarantee- delivery guarantee (seeGuarantee)ifNotExists- iftrue, only index documents that do not already exist- Returns:
- a future that completes when the operation is done
-
search
public Stream<SearchHit<io.fluxzero.common.api.search.SerializedDocument>> search(io.fluxzero.common.api.search.SearchDocuments searchDocuments, int fetchSize) Description copied from interface:SearchClientExecutes a streaming search query using the given criteria and fetch size.- Specified by:
searchin interfaceSearchClient- Parameters:
searchDocuments- the search parameters and queryfetchSize- the number of results to fetch per page- Returns:
- a stream of search hits matching the query
-
searchModels
public Stream<SearchHit<io.fluxzero.common.api.search.SerializedDocument>> searchModels(io.fluxzero.common.api.search.SearchModelDocuments request, int fetchSize) Description copied from interface:SearchClientExecutes a bounded current-state search across independent model relationships.- Specified by:
searchModelsin interfaceSearchClient
-
searchModelGraph
public Stream<SearchHit<io.fluxzero.common.api.search.SerializedDocument>> searchModelGraph(io.fluxzero.common.api.search.SearchModelGraphDocuments request, int fetchSize) Description copied from interface:SearchClientExecutes a current-state model search and composes each matching root's explicitly placed child graph.- Specified by:
searchModelGraphin interfaceSearchClient
-
documentExists
public boolean documentExists(io.fluxzero.common.api.search.HasDocument r) Description copied from interface:SearchClientChecks whether a document with the given criteria exists.- Specified by:
documentExistsin interfaceSearchClient- Parameters:
r- an object describing the document (e.g., id and collection)- Returns:
trueif the document exists,falseotherwise
-
fetch
public Optional<io.fluxzero.common.api.search.SerializedDocument> fetch(io.fluxzero.common.api.search.GetDocument r) Description copied from interface:SearchClientFetches a single serialized document matching the given request.- Specified by:
fetchin interfaceSearchClient- Parameters:
r- an object describing the document to retrieve- Returns:
- an optional containing the document, if found
-
fetchModelDocument
public io.fluxzero.common.api.search.GetDocumentResult fetchModelDocument(io.fluxzero.common.api.search.GetDocument request) Description copied from interface:SearchClientFetches a direct Model document together with the durable head written by the same materialization transaction.- Specified by:
fetchModelDocumentin interfaceSearchClient
-
getModelMigration
public io.fluxzero.common.api.search.GetModelMigrationResult getModelMigration(io.fluxzero.common.api.search.GetModelMigration request) Description copied from interface:SearchClientRetrieves the production and staged direct documents used to verify one Model migration.- Specified by:
getModelMigrationin interfaceSearchClient
-
getModelMigrations
public io.fluxzero.common.api.search.GetModelMigrationsResult getModelMigrations(io.fluxzero.common.api.search.GetModelMigrations request) Description copied from interface:SearchClientRetrieves a bounded batch of staged direct Model migrations.- Specified by:
getModelMigrationsin interfaceSearchClient
-
adoptModelMigration
public CompletableFuture<Void> adoptModelMigration(io.fluxzero.common.api.search.AdoptModelMigration request) Description copied from interface:SearchClientAtomically adopts a previously inspected and application-verified staged Model document while retaining the accepted normalized source until an ordinary Model write ends legacy-write coexistence.- Specified by:
adoptModelMigrationin interfaceSearchClient
-
fetch
public Collection<io.fluxzero.common.api.search.SerializedDocument> fetch(io.fluxzero.common.api.search.GetDocuments request) Description copied from interface:SearchClientFetches a collection of serialized documents that match the given request.- Specified by:
fetchin interfaceSearchClient- Parameters:
request- an object describing the documents to retrieve- Returns:
- a collection of retrieved documents matching
-
delete
public CompletableFuture<Void> delete(io.fluxzero.common.api.search.SearchQuery query, io.fluxzero.common.Guarantee guarantee, int batchSize) Description copied from interface:SearchClientDeletes documents matching a given query using the requested batch size.A value of
0uses the runtime default, a positive value requests that batch size, and a negative value requests a single unbounded statement.- Specified by:
deletein interfaceSearchClient- Parameters:
query- the search query specifying which documents to deleteguarantee- delivery guaranteebatchSize- requested delete batch size- Returns:
- a future that completes when the deletion has been performed
-
move
public CompletableFuture<Void> move(io.fluxzero.common.api.search.SearchQuery query, String targetCollection, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientMoves documents matching a given query to the given target collection.- Specified by:
movein interfaceSearchClient- Parameters:
query- the search query specifying which documents to movetargetCollection- the name of the collection to move documents toguarantee- delivery guarantee- Returns:
- a future that completes when the move has been performed
-
delete
public CompletableFuture<Void> delete(String documentId, String collection, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientDeletes a document by its unique id and collection name.- Specified by:
deletein interfaceSearchClient- Parameters:
documentId- the document idcollection- the collection to delete fromguarantee- delivery guarantee- Returns:
- a future that completes when the deletion has been performed
-
rewriteModelGraphDocument
public CompletableFuture<Void> rewriteModelGraphDocument(io.fluxzero.common.api.search.SerializedDocument replacement, String expectedManifest, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientConditionally replaces one materialized model-graph document while its manifest still matches the handled version. Implementations without durable model-graph projections may retain the unsupported default.- Specified by:
rewriteModelGraphDocumentin interfaceSearchClient
-
move
public CompletableFuture<Void> move(String documentId, String collection, String targetCollection, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientMoves a document to another collection.- Specified by:
movein interfaceSearchClient- Parameters:
documentId- the document idcollection- the collection to move fromtargetCollection- the collection to move toguarantee- delivery guarantee- Returns:
- a future that completes when the move has been performed
-
createAuditTrail
public CompletableFuture<Void> createAuditTrail(io.fluxzero.common.api.search.CreateAuditTrail request) Description copied from interface:SearchClientConfigures Fluxzero to use a search collection as a searchable audit trail.- Specified by:
createAuditTrailin interfaceSearchClient- Parameters:
request- a request object specifying the collection to use as an audit trail and retention configuration- Returns:
- a future that completes when the audit trail has been created.
-
deleteCollection
public CompletableFuture<Void> deleteCollection(String collection, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientDeletes an entire document collection and all its contents.- Specified by:
deleteCollectionin interfaceSearchClient- Parameters:
collection- the name of the collection to deleteguarantee- delivery guarantee- Returns:
- a future that completes when the collection has been deleted
-
fetchStatistics
public List<io.fluxzero.common.api.search.DocumentStats> fetchStatistics(io.fluxzero.common.api.search.SearchQuery query, List<String> fields, List<String> groupBy) Description copied from interface:SearchClientRetrieves search statistics (counts, averages, etc.) over matching documents.- Specified by:
fetchStatisticsin interfaceSearchClient- Parameters:
query- the query to filter documentsfields- the fields to compute statistics forgroupBy- field names used to group statistics- Returns:
- a list of
DocumentStats
-
fetchHistogram
public io.fluxzero.common.api.search.SearchHistogram fetchHistogram(io.fluxzero.common.api.search.GetSearchHistogram request) Description copied from interface:SearchClientFetches a histogram (bucketed time-series view) for documents matching the query.- Specified by:
fetchHistogramin interfaceSearchClient- Parameters:
request- the histogram query parameters- Returns:
- a
SearchHistogramrepresenting the result
-
fetchFacetStats
public List<io.fluxzero.common.api.search.FacetStats> fetchFacetStats(io.fluxzero.common.api.search.SearchQuery query) Description copied from interface:SearchClientRetrieves facet statistics (i.e., value counts) for a given query.- Specified by:
fetchFacetStatsin interfaceSearchClient- Parameters:
query- the query to match documents against- Returns:
- a list of facet statistics
-
bulkUpdate
public CompletableFuture<Void> bulkUpdate(Collection<io.fluxzero.common.api.search.DocumentUpdate> updates, io.fluxzero.common.Guarantee guarantee) Description copied from interface:SearchClientPerforms a batch update on a set of documents.- Specified by:
bulkUpdatein interfaceSearchClient- Parameters:
updates- the update operations to performguarantee- delivery guarantee- Returns:
- a future that completes when the updates have been applied
-
materializeModelCommit
-
prepareModelCommit
public Runnable prepareModelCommit(io.fluxzero.common.api.modeling.CommitModels commit, List<io.fluxzero.common.api.modeling.ModelUpdate> assignedUpdates, Set<String> excludedModelIds) Materializes direct Model documents and returns their deferred local-monitor publication.- Returns:
- publication to invoke after the owning commit fence has advanced
-
materializeModelGraphProjection
-
prepareModelGraphProjection
public Runnable prepareModelGraphProjection(io.fluxzero.common.api.modeling.ModelGraphProjectionConfiguration configuration, Set<String> rootIds, long stateIndex, boolean rebuild) Materializes graph documents and returns their deferred local-monitor publication.- Returns:
- publication to invoke after the graph-projection fence has advanced
-
openStream
-
openStream
-
truncateCollection
-
storeMessages
-
asSerializedMessage
protected io.fluxzero.common.api.SerializedMessage asSerializedMessage(io.fluxzero.common.api.search.SerializedDocument document) -
purgeExpiredMessages
-
notifyMonitors
-
registerMonitor
public io.fluxzero.common.Registration registerMonitor(BiConsumer<String, List<io.fluxzero.common.api.SerializedMessage>> monitor) -
registerMonitor
-
close
public void close()Description copied from interface:SearchClientCloses any underlying resources.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSearchClient
-