need to allow users of my app to have a search page that lets them enter
natural search strings to find and narrow search results.
I wanted each word on the search field to be treated as AND clause in my
search. I also need the search to act like full text where multiple fields
are considered for a match. I also have a special case whereas a numeric
keyword is treated special and only certain fields are searched in that
case.
Examples:
Keyword: dave
Searches: ( `User`.`name` like '%dave%' OR `User`.`email` like '%dave%' )
Keyword: dave thomas
Searches: ( ( `User`.`name` like '%dave%' OR `User`.`email` like '%dave%' )
AND ( `name` like '% thomas%' OR `email` like '% thomas%' ) )
Keyword: 341
Searches: ( `User`.`id` = '341' )
I have written a model function that divides the keywords into an array and
creates an array of conditions that I pass to the find() command. This works
great.
However this feels like a very common pattern, and I wonder if I just
reinvented the wheel? Sooner or later I will be asked to add special keyword
handlers such as:
dave OR thomas
dave AND thomas
"dave thomas"
"dave thomas" OR "david thomas"
Is there already a cake pattern or helper that exists that I should be
using? If not I may just create one for the good of the community.
--
View this message in context: http://n2.nabble.com/Search-engine-like-function--tp2753945p2753945.html
Sent from the CakePHP mailing list archive at Nabble.com.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
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?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment