Thanks Jonathan. FQ seems promising. I will give it a go. Swapnonil Mukherjee
On 26-Oct-2010, at 7:29 PM, Jonathan Rochkind wrote: > So, first of all, "exact" match is hard in Solr on tokenized fields. > Tokenized fields don't really do that. So for exact match, you should > probably use a non-tokenized field (string or text with keywordtokenizer > (which should really be called the non-tokenizer)). If there's only one > token in your value anyway though, like a single number, it may not > matter and work fine. > > Secondly, I'd recommend combining a dismax query for the user-entered > phrase (like 'dog') with standard lucene queries for those other > things. There are (at least) two ways to do that. The first is just put > everything after the first AND in one or more 'fq' parameters instead of > trying to include them in 'q'. The second is to use Solr's nested query > syntax, to specify sub-queries with different query parsers. Someone can > explain the second if you need it, but the easier to understand 'fq' > approach seems right to me for your case. > > Swapnonil Mukherjee wrote: >> Hi Everybody, >> >> Let me give you a brief idea of our Solr document. We have about 6 text type >> fields, each containing IPTC data extracted from photos. Search is performed >> mostly on these 6 fields. >> We also have a mutlivalue field named group_id that contains a list of all >> the group_ids that have access to this photo. In other words we are >> storing the metadata of the photo as well as the permissions applicable for >> this photo in the Solr document itself. This group_id field by the way is of >> long type. >> >> Additionally we have certain boolean and constant type fields named >> visibleToEndUser (boolean) and entityType (a java enum between 0 to 5). >> >> The first field defaultSearch is a copyField which contains a copy of all >> the values of 6 text type fields that I have mentioned. >> >> The way we query presently using the default search handler is like this. >> >> defaultSearch:(Dog) AND (group_id:2181347 OR group_id:2181364 OR >> group_id:2216624 OR group_id:2216990) AND (entityType:0) AND >> (visibleToEndUser:true) >> >> We want to start using the dismax (if not dismax then edismax) query >> handler but so far I have not been able to replicate the query mentioned >> above to the equivalent dismax form. >> >> What I cannot figure out is? >> >> 1. How do I apply exact match on the group_id, visibleToEndUser and the >> entityType fields? Or How how do I query a specific field with a specific >> value rather than searching across all fields with all values. >> 2. How do I apply OR and AND conditions? >> >> >> Swapnonil Mukherjee >> >> >> >> >>