|Work In Progress|
The SESAT Kernel, the core to the search front, and the generic.sesam skin (SFC) serves as a search engine's controlling and presentation framework.
It provides developers will the following features:
- A modularised model-view-control architecture specialised for a data fetch and present paradigm aka a search engine. Each layer forms a separate maven-2 built library project, fully extendable by defined Service Provider Interfaces (SPIs). Dependencies through each layer are supported with a Contextual Inversion of Control implementation. Default implementation of these SPIs exist within the generic.sesam skin (SFC), and reference implementations found in the genericno.sesam.no & genericse.sesam.se skins (SFCs).
- A Search Command SPI, also comprising of individual for SPIs Query Transformations, Search Executions, and Result Handling. Provides sequential and parallel thread execution for maximum performance.
- Default Query Transformer implementations for Age filtering, Exact field matching, Regular Expression transformations, Synonym transformations, Term prefixing, and Query-Matching Token (un)masking.
- Default Result Handler implementations for Age calculations, Modifier combining, Date formatting, Detect/Find File/Url formats, Mathematical & Scientific number operations, Phone number formatting, Spelling Suggestion formatting.
- Default Search Command implementations for Fast-4 Simple search, Fast-4 Advanced search, Fast-5 ESP search, generic XML search, Web Services seach, Blending (FAST) search, Clustering (FAST) search, Correcting (FAST) search, Mathematical/Calculator search, Danish Mobile search, Overture PPC search, PicSearch search, Platefood PPC search, Sensis search, Stock market search, Yahoo IDP search, Yahoo Contextual Web Service search, Yahoo Media search, and Youtube search.
- Reference Search Command implementations for Blinkx Video search, Blocket search, Finn search, GeoData Map search, HittaMap search, Hitta search, HittaWeather search, Prisjakt search, Solr (Lucene), Storm Weather Blinkx Video search, Tasteline search, TV-guide (FAST) search, Whitepages (FAST) search, Yellowpages (FAST) search.
- DataModel infrastructure holding definitions and access to all data required through the process stack and in the presentation layer. The DataModel provides compile-time type safety to the data, an interface for presentation pluggable renderers, templating simplicity, client and developer security, scalability through immutability and re-use of objects, and ajax (remoting) interaction.
- The DataModel contains (Data Access Objects) nodes for http-requests, http-sessions, users and locations, skins (SFCs), Queries, Pages and verticals, and Searches (results, navigators, enrichments, advertisements, rss).
- The DataModel extends and supports the JavaBean specification, each node a bean with associated BeanInfos.
- Query parser and tree implementation. Based on javacc. Provides a superior approach over string manipulation from the user's inputted query through the query transformations and into the search commands. The resulting Query tree is manipulated through the remainder of the process stack with visitor patterns. Each node (token or operator) permits storage of meta-data and becomes immutable providing better than linear scalability.
- Query parser supports tokens for words, numbers, phone numbers, urls, email addresses, and phrases.
- Query parser supports operators of and, or, xor, and default hidden operator.
- Default visitor pattern implementations for counting nodes, finding nodes, finding positions within the tree, finding forests of like nodes, finding parents, searching meta-data, name and location separation and extraction.
- Default Query tree alternations for Fullname detection, and Tree rotations.
- Apache Velocity is fully supported as "templates" in the presentation framework.
- JavaServer Pages are fully supported as "templates" in the presentation framework.
- An http protocol layer handling and encapsulating sessions, encodings (including broken clients), pretty URL variants and URL rewriting (like apache's mod_rewrite), user login persistence, parameter encryption, and resource caching.
- Custom HttpClient library, providing basic Quality-of-Service and statistics of outbound connections. Backgrounds and buffers outbound connections to avoid thread starvation or locking, and protect against misbehaving indexes.