Textual Versioning and Indexing for TEMS Trial 6 + Trial 8 Applications
Issue Description
This ticket outlines the requirements for implementing server-side indexing and search functionalities for the TEMS Trial 6 and TEMS Trial 8 applications. The goal is to address performance issues with client-side search, support multi-server and multi-type scenarios, and enable scalable search and indexing capabilities for future iterations.
Functional Requirements
Existing Functionalities (as described by the lead developer):
-
Account Management:
- Users can create an account, log in, and log out.
-
Catalog Browsing:
- Users can list objects in a catalog (e.g., 3D models, articles, providers, etc.).
-
Dynamic Search:
- Users can search for objects using dynamic criteria based on the object types present in the catalog.
-
Object Details Display:
- Users can view individual object details in a dynamically generated modal based on the object type.
-
Add to List:
- Users can add any
tems:Object
to their list.
- Users can add any
Important Characteristics:
- The type of objects and catalogs governs the display logic.
- All types are compatible with one another, ensuring interoperability.
Indexing and Search Requirements
Server-Side Indexing:
- Implement indexing to handle:
- Multi-server architecture.
- Multi-type object compatibility.
- Multi-contract permissions (potentially using contracts for managing access).
Search Features:
- Enable server-side search for better performance and scalability.
- Implement server-side pagination to manage large datasets effectively.
- Address dynamic search needs, with criteria based on object types.
Performance Considerations:
- Current client-side search performs well with a small number of objects.
- Server-side search and indexing are required to handle hundreds or thousands of objects without degrading performance.
- Long-term goal: Achieve "Google by Startin’blox" performance levels.
Object Data Structure:
- The
tems:Object
type and its subtypes must be indexed. - Generic fields include:
- Title
- Description
- Copyrights
- Website
- Licenses
- Images
- Providers
Open Questions
-
Permissions Management:
- How should contracts be integrated to manage permissions for accessing indexed data?
-
Dynamic Display Logic:
- How should the dynamic modals adapt to future ontology-related developments?
-
Indexing Scope:
- Should indexes be limited to specific fields or expanded dynamically?
-
Pagination Approach:
- What is the optimal server-side pagination strategy for large datasets?
-
Performance Metrics:
- What benchmarks should be set for acceptable performance levels?
Next Steps
- Define UX for server-side search and indexing.
- Develop and test a basic indexing prototype.
- Align indexing work with potential future ontology developments.
- Implement server-side pagination and validate performance improvements.
- Conduct performance testing with increasing dataset sizes.