Using the Filter Query in Solr (fq)
Filter queries are applied to a result set after it has generated the search results. This can be useful in cases where you want to filter by category or user.
In my use case, I’d like to filter a list of questions by a group of categories on Answerbag. This is used primarily for partner sites who’ve opted into our white label cobrand system and have selected a list of categories to restrict the site to. It affects search results, as the goal is to limit searches to these categories.
Technically, this can be done on 2 levels. First, it might be done in code, where we bring back a massive result set and filter out the questions that don’t satisfy our requirement. Ideally it can be done on the search engine side, which would reduce network overhead and eliminate a few really weird bugs that can crop up as a result.
It turns out this is pretty easy – but you must send it through as a single filter query, and not separate params for each filter.
To limit your filters to certain categories, you’d add something along these lines to your GET request, assuming you’ve stored categories by their numeric primary key:
fq=category_id:(24 79 84 693 694 1270 2309 2821 3284)
As usual, comments and thoughts are encouraged.
5 Responses to Using the Filter Query in Solr (fq)
Leave a Reply Cancel reply
Recent Comments
- Anil on MySQL Triggers Tutorial
- Ashish on MySQL Triggers Tutorial
- David on iCal Agenda
- jon on IP address geolocation SQL database
- pim on IP address geolocation SQL database
- jnns on Redis Wildcard Delete
- K.C. Murphy on iCal Agenda
- BA on Experts Exchange should be removed from Google search results
- Andrew on Executing multiple curl requests in parallel with PHP and curl_multi_exec
- Stu on Executing multiple curl requests in parallel with PHP and curl_multi_exec
Recent Posts
- New Project: Jester
- Open New Terminal Tip
- Installing MySQLdb on MacOS Lion
- Headless VM Server Using Ubuntu 11.10
- Get rid of Facebook’s Awful Ticker
- Api Tester now hosted on Github
- Trac .11 jQuery bug
- Multiple Filetypes in Vim
- Git Tip: Setting Up Your Remote Server
- Install issue pymongo on OSX (setuptools out of date)
Categories
- amazon (1)
- answerbag (6)
- apache (9)
- apple (8)
- awk (2)
- bbedit (2)
- c++ (3)
- chrome (2)
- cluster (1)
- cocoa (1)
- collective intelligence (1)
- curl (3)
- db2 (1)
- demand media (1)
- ebay (1)
- eclipse (4)
- erlang (13)
- facebook (1)
- fortran (1)
- gen_server (1)
- git (5)
- google (4)
- haddad (1)
- hdf5 (1)
- html (1)
- innodb (1)
- itunes (1)
- java (2)
- jester (1)
- kvm (1)
- launchbar (1)
- leex (1)
- letsgetnuts.com (1)
- libvirt (1)
- links (6)
- linux (27)
- lucene (1)
- mac (16)
- memcached (1)
- misconception (1)
- mobile (1)
- mono (1)
- mssql (1)
- munin (1)
- mysql (31)
- numpy (1)
- oracle (1)
- php (23)
- puppet (4)
- pyparsing (1)
- pytables (1)
- python (11)
- q&a (1)
- quicksilver (1)
- rant (6)
- readynas (1)
- redis (2)
- regex (1)
- replication (1)
- search (1)
- shitty code (1)
- solr (3)
- spaces (1)
- sshfs (1)
- stored procedure (1)
- svn (5)
- textmate (2)
- tips (22)
- trac (1)
- tutorial (4)
- ubuntu (3)
- Uncategorized (4)
- unix (1)
- vim (3)
- virtual box (6)
- vmware (1)
- weird (3)
- wikipedia (1)
- windows (1)
- xcode (1)








Thanks! Exactly what I was looking for. It is quite similar to doing a IN query in SQL.
Same as Varun – exactly what I was looking for
Thank you for the post, I am actually trying to insert another query in fq, what would be the syntax?
I’ve tried using _query_ but it doesnt work the way I want it to. Here is what im trying
fq=_query_:”{!lucene fl=id qf=name} video”
any suggestions on this?
thanks in advance
Is it possible to filter out results with the condition — do not include documents whose title contains [pills, spam, money] ? How would this be implemented?
Hi Pranav,
Did you get any solution for filtering results with condition.. I am looking for something similar. Please let me know. Thx.