November 12, 2009
We’ve been working on Super Search, the next installation in our Performance Suite of software for several months now. We had a need and desire to create a fast and flexible search module for EE that could also take the place of some of our more common weblog:entries calls. In the process we realized that we wanted to also control most of the functionality of the module right in the URI of the page. For a variety of reasons, having this level of control created a lot of fun flexibility and possibilities. We built using some of the Google syntax that we have all become used to.
One of the things that we use the module for the most is to enable price range searching. Maybe we have a classified ad website and we want to allow people to search for entries that fall between a certain price range. We made sure that this was easy in Super Search and we also built a tool to make it easy to adjust EE MySQL fields to enable the behavior. You just build a page with the {exp:super_search:results} loop and in the URI you pass a query that checks the range on the custom field that stores the price, like this:
http://www.yoursite.com/index.php/search/results/search&price-from=100&price-to=500
We also use the module quite a bit to search for entries where certain custom fields contain exact matches on some keyword. So on the same classified ad site, we might do this:
http://www.yoursite.com/index.php/search/results/search&price-from=100&price-to=500&exact-make=Chevy&exact-model=Camaro
This search would find Chevy Camaros that cost between $100 and $500 dollars.
You can filter on the weblog as well.
http://www.yoursite.com/index.php/search/results/search&price-from=100&price-to=500&exact-make=Chevy&exact-model=Camaro&channel=used_cars
The above search would find used Chevy Camaros selling for $100 - $500 bucks.
Super Search also has some pretty smart caching mechanisms built in. You can set searches to cache on a time based interval. You can set the search cache to refresh when specified templates are updated or when weblogs are posted to or when categories in specified groups are edited. Super Search caching with the already speedy architecture of the module makes it a fast little critter.
There are quite a few fun possibilities with Super Search and I plan to blog about them in the upcoming weeks. As we watch the module go through public beta, even more interesting uses will pop up.
mk
Tags: super search, searching, release, performance, google
Comments
Oh Mitchell, you don’t even know how perfect the timing is for this. Please tell me one thing - tell me that you built a category search into this. So let’s sat that Chevy is a category and I am searching for Chevy Camaros. Something like this http://www.yoursite.com/index.php/search/results/search&price;-from=100&price;-to=500&category=Chevy&exact;-model=Camaro&channel=used_cars
Going to the public beta now…
Posted by Chad Crowell on November 12, 2009 at 5:13 pm
And after reading the docs it looks like categories are included… buying now!! Thanks Mitchell
Posted by Chad Crowell on November 12, 2009 at 5:19 pm
Chad,
We also enabled conjoined category searching which is something I do on the regular.
/search/results/search&category=Camaro&&ChevyThis will pull entries that belong to both cats and exclude those that belong only to one of the cats.
Holler!
mk
Posted by Mitchell Kimbrough on November 12, 2009 at 5:28 pm
Semicolons are popping up in our comments. It’s something that EE does when it sees ampersands. Don’t put semicolons in your search string.
Woot!
mk
Posted by Mitchell Kimbrough on November 12, 2009 at 5:29 pm
OMG I just lost my sh*t. I can’t wait to get intimate with this thing.
Posted by eyevariety on November 12, 2009 at 9:12 pm
this is what we all waited for
Thx people
Posted by Djive on November 13, 2009 at 12:16 am
All my favorite people are commenting on this thread. Long time customers. Long time fellow developers…
You all holler with bugs.
Cheers.
mk
Posted by Mitchell Kimbrough on November 13, 2009 at 1:08 am
This sounds immense, we’ve just started resorting to using Google Search in place of the native search module but it will be interesting to see how this compares, much more powerful by the sounds of it!
Posted by Nathan Pitman (Nine Four) on November 13, 2009 at 2:48 am
Maybe I’m overlooking something, but I don’t see anything pertaining to searches including related entries and reverse-related entries. These are sometimes useful as supplements to or substitutes for categories, where the related entries allow for a description of what’s going on (think of practice-area pages for a law firm, and how the attorneys’ bios would be related to the practice areas if a particular attorney practices in that area).
Does Super Search allow for searches to include related entries?
Also, looking at what it does now and your description of what it can do, maybe this shouldn’t be described as simply a search module. It seems more like a weblog module replacement.
Posted by Brendon Carr on November 16, 2009 at 7:22 pm
Brendon,
You’re right, currently Super Search is not checking related entries. I’ll add that for consideration to the feature list.
And you’re also right that Super Search can in quite a few cases replace weblog:entries.
Posted by Mitchell Kimbrough on November 17, 2009 at 11:57 am
Yello…
I guess this goodie isnt know how to search MSM-sites?
Posted by Tuittu_1 on November 18, 2009 at 12:42 am
Tuittu,
It should have no problem with MSM sites. You would just use the site_id parameter when necessary
http://www.solspace.com/docs/detail/super_search_results/#site_id
Posted by Kelsey Martens on November 18, 2009 at 1:09 pm
So you can search from Site A and results comes from Site B, C and D also? Is this module how soon EE2.0 ready? The reason i ask, is that there has not been such function that allows search MSM-wide, and that’s very sad and poor thing.
Posted by Tuittu_1 on November 20, 2009 at 7:50 am
Tuittu,
We’ll have more info available for you soon
Posted by Kelsey Martens on November 20, 2009 at 11:46 am
I’m actually in the process of constructing a classified ads site, and this pops up. Amazing.
However, I’ve got a question (err… see a couple of paragraphs down for the actual question :p). I’m making heavy use of a couple of add-ons for the site, namely, Gypsy and FF Matrix fields. I have weblogs such as cars, pets, apartments, etc. They all have their own fields (pets have dog/cat dropdowns, cars have year, make, apartments have # rooms, floor, etc), but all share some basic fields, which is where Gypsy comes in.
On top of this, I use a Gypsy FF Matrix field to store price information (1 row max). Now, since this classified ads site will be catering to a somewhat international community in a certain city, it’s set up to accommodate 3 of the most common currencies in use in that city.
Bottom line is, I have a “shared_price-range” Gypsy FF Matrix field with a “currency” FF Radio Group, and “min” and “max” Text fields (fieldlets?). Can the Super Search module access and make use of my Gypsy FF Matrix fields?
Posted by Sandwich on November 26, 2009 at 4:44 am
Sandwich,
The price fields need to be separate MySQL numeric columns in order for Super Search to work well. People will want to order results by price and search by price range. Super Search will not be able to do this with FF Matrix. FF Matrix is a killer tool, but it’s a data storage and data access tool. It’s not a data search tool. The format of data in FF Matrix fields is not set up for fast and highly functional DB searching and scanning. You’ll have to break out those fields into separate EE custom fields and then use the Super Search CP to convert them to a numeric MySQL type like float or decimal.
As for the other Gypsy and FF Matrix aspects of this, we will be looking into integrating support for those tools more tightly soon. However, because of the nature of the storage method of data using those tools, our choices, flexibility and performance opportunities will be limited.
mk
Posted by Mitchell Kimbrough on November 26, 2009 at 11:12 am
Ok, thanks for the very informative reply, MK.
Posted by Sandwich on November 26, 2009 at 1:26 pm