About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
development:architecture:search_service

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
development:architecture:search_service [2015/12/11 19:48] – [Additional Resources] demiankatzdevelopment:architecture:search_service [2023/11/09 21:12] (current) demiankatz
Line 3: Line 3:
 ===== Introduction ===== ===== Introduction =====
  
-VuFind 2.0 includes a completely refactored search system that integrates access to the application's remote search systems. The design goals for the new search system are as follows:+VuFind®'search system integrates access to the application's remote search systems. The design goals for the search system are as follows:
  
-  * separate re-usable classes for interacting with a specific remote system and the application-specifc implementation+  * separate re-usable classes for interacting with a specific remote system and the application-specific implementation
   * streamline the interface of backend related classes   * streamline the interface of backend related classes
-  * use the Zend Framework'capabilities to provide extend and/or augment the VuFind implementation +  * use [[development:architecture:laminas|Laminas]]' capabilities to provideextend and/or augment the VuFind® implementation
- +
-FIXME+
  
 {{:wiki:vf2-search-sequence.png?linkonly|sequence diagram}} {{:wiki:vf2-search-sequence.png?linkonly|sequence diagram}}
Line 35: Line 33:
     public function add(RecordInterface $record);     public function add(RecordInterface $record);
  
-Each member of the collection must implement a getter and setter for a backend identifier that servers as an indicator of the record's source.+Each member of the collection must implement getters and setters for a source identifier that serves as an indicator of the record'source (where the record resides) and its search backend (where the record was found). These two values are usually the same, but in some edge cases (such as the [[configuration:blender|blended search]]) they can differ. Results can also be optionally assigned labels to convey additional information to the end user about their source.
  
   VuFindSearch\Response\RecordInterface   VuFindSearch\Response\RecordInterface
     public function setSourceIdentifier($identifier);     public function setSourceIdentifier($identifier);
 +    public function setSourceIdentifiers($recordSourceId, $searchBackendId);
 +    public function getSearchBackendIdentifier();
     public function getSourceIdentifier();     public function getSourceIdentifier();
 +    public function addLabel($label, $class);
 +    public function setLabels($labels);
 +    public function getLabels();
  
-==== Example: The SOLR Backend ====+==== Example: The Solr Backend ====
  
-:!: In VuFind 2.0 RC1 the separation of Backend and Connector responsibilities is not yet fully implemented:!:+The Solr backend provides most feature-rich implementation of a VuFind® backend.
  
-The SOLR backend provides most feature-rich implementation of VuFind 2 backend.+The Solr backend uses dedicated Connector class that adds another level of abstraction: While the backend translates the user-initiated retrieval operation into a set of Solr query parameters, the Connector maps the operation to the responsible Solr request handler and handles the HTTP transport layer
  
-The SOLR backend uses a dedicated Connector class that adds another level of abstraction: While the backend translates the user-initiated retrieval operation into a set of SOLR query parameters, the Connector maps the operation to the responsible SOLR request handler and handles the HTTP transport layer.  +The Connector returns a serialized Solr response (i.e. the body of the HTTP response) which is deserialized by the Backend. The deserialized response is then passed to a configurable factory that creates the record collection containing the records.
- +
-The Connector returns a serialized SOLR response (i.e. the body of the HTTP response) which is deserialized by the Backend. The deserialized response is then passed to a configurable factory that creates the record collection containing the records. +
- +
-FIXME+
  
 ===== Search Service ===== ===== Search Service =====
  
-The search service integrates all backends used by the VuFind application. Instead of using the backend classes directly, all retrieval operations use the search service class and select the backend by passing its identifier as first argument. This indirection is necessary in order to implement a well defined behavior of retrieval operations required to extend and/or modify the application without modifying the core classes or hardcoding application specific behavior.+The search service integrates all backends used by the VuFind® application. Instead of using the backend classes directly, all retrieval operations use the search service class and select the backend by passing its identifier as first argument. This indirection is necessary in order to implement a well-defined behavior of retrieval operations required to extend and/or modify the application without modifying the core classes or hardcoding application specific behavior.
  
 :!: It is worth noting that every retrieval operation can be called with a 'parameter bag' that holds backend specific operation parameters. This certainly puts limitations on the integration part, but allows for a great deal of flexibility with regards to backend features :!: :!: It is worth noting that every retrieval operation can be called with a 'parameter bag' that holds backend specific operation parameters. This certainly puts limitations on the integration part, but allows for a great deal of flexibility with regards to backend features :!:
Line 80: Line 79:
 ===== Additional Resources ===== ===== Additional Resources =====
  
-This [[https://www.youtube.com/watch?v=8InrSNbt1Sk|Video Presentation from the 2013 VuFind Summit]] features some detailed discussion of the search service. Slides are available [[http://vufind.org/docs/summit2013/search.ppt|here]].+This [[https://www.youtube.com/watch?v=8InrSNbt1Sk|Video Presentation from the 2013 VuFind® Summit]] features some detailed discussion of the search service. Slides are available [[http://vufind.org/docs/summit2013/search.ppt|here]]
 + 
 +The [[videos:search_system|Search System Overview and Update]] video from 2021 provides some valuable updates to the original 2013 Summit content, addressing changes made in release 8.0.
 ---- struct data ---- ---- struct data ----
 +properties.Page Owner : 
 ---- ----
  
development/architecture/search_service.1449863309.txt.gz · Last modified: 2015/12/11 19:48 by demiankatz