Author: dr
Date: Fri Feb 15 16:43:41 2008
New Revision: 7388

Log:
- Update with comments, extend a bit.

Modified:
    experimental/Search/design/design.txt

Modified: experimental/Search/design/design.txt
==============================================================================
--- experimental/Search/design/design.txt [iso-8859-1] (original)
+++ experimental/Search/design/design.txt [iso-8859-1] Fri Feb 15 16:43:41 2008
@@ -38,6 +38,9 @@
 class ezcSearchFindQuery (or one of it's children). This query object is 
created by
 calling the createFindQuery() method on this class. Besides createFindQuery(),
 a method to create a query for deleting indexed documents will be provided too.
+The classes representing documents need to implement an interface though that
+specifies __get_state() and __set_state() - something we forgot for
+PersistentObject.
 
 
 ezcSearchSessionInstance
@@ -59,21 +62,21 @@
 ezcSearchDefinitionManager and used by the backends to both index and find
 documents from the search backends. For each document field it stores a
 ezcSearchObjectProperty. It also defines a field with which a document
-can be uniquely identified. In future versions it could also group fields for
-easier searching of multiple fields etc.
-
-ezcSearchDocument
------------------
-
-And object that can be indexed with the search index. It is also returned as
-part of the ezcSearchResult.
+can be uniquely identified, as well as a default search field. In future
+versions it could also group fields for easier searching of multiple fields
+etc.
 
 ezcSearchHandler
 ----------------
 
 The base class that all search backends implement. The handlers now how to
 communicate to the backends, generate correct search query strings, and how to
-present results. Handlers can also accept search-backend specific options.
+present results. Handlers can also accept search-backend specific options. For
+the first version only ezcSearchSolrHandler is planned, while later versions
+might also have backends for Google, Yahoo! etc. A backend does not have to
+implement the index(), createDeleteQuery() and delete() methods, as they are
+not available for every handler.
+
 
 ezcSearchSolrHandler
 --------------------
@@ -86,8 +89,8 @@
 --------------
 
 Implements a fluent language to query the search index. The methods are all
-quite the same as ezcDbQuery. It is inherited by ezcSearchFindQuery and
-ezcSearchDeleteQuery for respectably searching in, or deleting from the search
+quite the same as ezcDbQuery. This class is inherited by ezcSearchFindQuery and
+ezcSearchDeleteQuery for searching in, or deleting from the search
 index.
 
 
@@ -101,9 +104,73 @@
 ezcSearchResult
     Provides meta data about the search (time, number of results, etc.) as well
     as an array of the found results. Depending on the database backend, the
-    array of found documents can be of different classes, but they all inherit
-    the ezcSearchDocument class.
+    array of found documents can be of different classes, as the document types
+    could be different.
 
+Example Usage
+=============
+
+::
+
+    <?php
+    $backend = new ezcSearchSolrHandler( 'localhost', 6983 );
+    $session = new ezcSearchSession(
+                   $backend,
+                   new ezcSearchDefinitionManager( 'path/to/definitions' ) 
+               );
+
+    // indexing a document
+    $session->index( $document );
+
+    // finding documents where name = Derick
+    $q = $session->createFindQuery();
+    $q->find( $q->eq( 'name', "Derick" ) );
+    $ret = $session->find( $q );
+
+    // finding documents where any field contains Derick, from row 10 and 7
+    // rows long
+    $q = $session->createFindQuery();
+    $q->find( $q->eq( '*', "Derick" ) );
+    $ret = $session->find( $q )->limit( 7, 10 );
+
+    // finding documents where text contains Derick and Tiger, only
+    // having name as returned field, and order by published date.
+    $q = $session->createFindQuery();
+    $q->select( 'name' )
+      ->find( $q->and(
+                  $q->eq( 'text', "Derick" ),
+                  $q->eq( 'text', 'Tiger' )
+            )
+        )
+      ->orderBy( 'published' );
+    $ret = $session->find( $q );
+
+    // finding documents where text contains Derick or Tiger
+    $q = $session->createFindQuery();
+    $q->find( $q->in( 'text', array( 'Derick', 'Tiger' ) ) );
+    $ret = $session->find( $q );
+
+    // finding documents containing 'Ramius' published between 2007-01-01 and
+    // 2007-12-31
+    $q = $session->createFindQuery();
+    $q->find( $q->and(
+                  $q->eq( 'text', 'Ramius' ),
+                  $q->between( 'published',
+                      new DateTime( '2007-01-01' ), // DateTime object
+                      strtotime( "2007-12-31" )     // timestamp
+                      ) 
+                  )
+            );
+    $ret = $session->find( $q );
+
+    // finding documents containing 'plane' and putting facets on the
+    // categories, limiting result set to 8 and facets to 4
+    $q = $session->createFindQuery();
+    $q->find( $q->eq( 'description', 'plane' ) )
+      ->limit( 8 )
+      ->facet( 'category' )->limit( 4 );
+
+    ?>
 
 
 


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to