| eZ Component: Search, Requirements |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| :Author: Derick Rethans |
| :Revision: $Revision$ |
| :Date: $Date$ |
| |
| Introduction |
| ============ |
| |
| Description |
| ----------- |
| |
| The Search component provides an interface to index and query documents with |
| different search engine backends. Searching is becoming an integral part of |
| web sites, this is becoming an important feature. |
| |
| |
| Requirements |
| ============ |
| |
| The components should implement an API that supports multiple backends. |
| Towards all backends the same API should work to index and search for |
| documents. |
| |
| Document |
| -------- |
| |
| The format of the documents that can be indexed, and search for, need to be |
| able to be defined by the component. Hereby we think about specifying the |
| different fields that form a document. Each of the fields should be mapped to |
| a data type that the different backends understand. The document |
| specification should allow for easy definition, and the same specification |
| should be used for both indexing and searching for documents. The |
| specification could also re-map field names and data types to field names |
| and data types that the backends understand. |
| |
| Indexing |
| -------- |
| |
| Indexing should be done by sending the documents to an indexer. Indexing |
| should support both blocking, and non-blocking mode, depending on what the |
| search engine backend supports. The search component must support XML for |
| backend communication. |
| |
| Searching |
| --------- |
| |
| Searching documents is primarily term based. One or multiple terms are |
| provided, and the search result list contains only documents containing those |
| term. |
| |
| Facets_ should be supported, and the available facets should be the document |
| fields, and facets queries within the document fields. |
| |
| General |
| ------- |
| |
| For querying the index, some mechanism for handling permissions should be |
| supported to limit the search results. |
| |
| The query API should allow for easy searches, similar to an SQL query. |
| Therefore a similar interface as Database's SQL abstraction would be a |
| preferred querying language. This querying interface should allow for |
| abstractions of differences in search backend querying dialects. Searches |
| should also allow for limitation of meta data, such as publication date/time. |
| |
| |
| Special considerations |
| ====================== |
| |
| It is important that as many backends could be supported through this |
| component, so it is important that the external API does not prevent some |
| functionalities of the backends to be exposed. The component will only deal |
| with UTF-8 strings, just like all the other components. |
| |
| |
| .. _facets: http://www.searchtools.com/info/faceted-metadata.html |