what if you add your country field to qf with a strong boost? the search experience would be slightly different than if you filter on country, but maybe still good enough for your users and certainly simpler to implement and maintain. You'd likely only want exact matches. Assuming you are using edismax and a stopword file for your main query fields, you'll run into an issue if you just index your country field as a string and there's a stopword anywhere in your query...see SOLR-3085. To avoid this, yet still boost on country only when there's an exact match, you could index the country field as text using KeywordTokenizerFactory and the same stopword file as your other fields.
Regardless of the approach you take, unless there's only a small list of countries you care about, multi-word countries might be too big an issue to ignore, especially when the name contains common words (e.g. United States, South Korea, New Zealand). This may be a good candidate for named entity recognition on the query, possibly leveraging openNLP. I once saw a presentation on how linkedin uses nlp on the query to detect the types of entities the user is looking for. Seems similar to what you're trying to accomplish. Of course, if countries are the only thing you're interested in then you may be able to get away with client code for simple substring matching using a static list of countries. On Dec 23, 2013 3:08 PM, "Joel Bernstein" <joels...@gmail.com> wrote: > I would suggest handling this in the client. You could write custom Solr > code also but it would be more complicated because you'd be working with > Solr's API's. > > Joel Bernstein > Search Engineer at Heliosearch > > > On Mon, Dec 23, 2013 at 2:36 PM, jmlucjav <jmluc...@gmail.com> wrote: > > > Hi, > > > > I have this scenario that I think is no unusual: solr will get a user > > entered query string like 'apple pear france'. > > > > I need to do this: if any of the terms is a country, then change the > query > > params to move that term to a fq, i.e: > > q=apple pear france > > to > > q=apple pear&fq=country:france > > > > What do you guys would be the best way to implement this? > > - custom searchcomponent or queryparser > > - servlet in same jetty as solr > > - client code > > > > To simplify, consider countries are just a single term. > > > > Any pointer to an example to base this on would be great. thanks > > >