Tuesday, January 25, 2011

Re: Complex Search

Maybe we can use a search engine like SphinxSearch, Solr, ZendLucene. 

On Tue, Jan 25, 2011 at 1:22 PM, Steve <stephen@foundfamily.co.uk> wrote:
Can anyone help with this ?

Steve

On Sun, 2011-01-23 at 15:22 +0000, Steve wrote:
> I have a database with the following tables.
>
> book -  Holds id, title, description, publisher ...
> author - Holds id, name
> books_author - Holds id, book_id, author_id
>
> So a many-to-many relationship on the book and author as one book can
> have many authors and one author can have many books.
>
> To search for books with a text field, I have the following function in
> the Book model
>
> /**
>  * Build conditions to search books for a string of text.
>  * @param string $search
>  * @return array of books that contain the searched for text in their
> database definition.
> */
> function searchConditions( $search ) {
>   $like = '%' . $search . '%';
>   $conditions = array (
>     "OR" => array (
>       "Book.isbn LIKE" => $like,
>       "Book.ean LIKE" => $like,
>       "Book.name LIKE" => $like,
>       "Book.description LIKE" => $like,
>       "Book.publisher LIKE" => $like
>     )
>   );
>   return $conditions;
> }
>
> My BookContoller class calls this in the following manner :
>
> /**
>   Display books to user optionally filtered by search text. The text
>   will have been stored in $this->search by the search() function.
> */
> function index() {
>   $this->Book->recursive = 1;
>   if($this->search) {
>     $this->paginate = array(
>       'limit' => 12,
>       'order' => array('Book.created' => 'desc'),
>       'conditions' => $this->Book->searchConditions($this->search));
>   } else {
>     $this->paginate = array(
>       'limit' => 12,
>       'order' => array('Book.created' => 'desc'));
>   }
>   $this->set('books', $this->paginate('Book'));
> }
>
>
> Now...
>
> How do I adapt the search to include the names of the books authors ?
>
>
>


--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.


To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php



--
Vivi
http://photos.vr-3d.net

--
Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
 
 
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php

No comments: