: &q=photo_id:* AND gender:true AND country:MALAWI AND online:false photo_id:* does not mean what you probably think it means. you most likely want photo_id:[* TO *] given your current schema, but i would recommend adding a new "has_photo" boolean field and using that instead.
thta alone should explain a big part of what those queries would be slow. you didn't describe how your "q" param varies in your test queries (just your fq). I'm assuming "gender" and "online" can vary, and that you sometimes don't use the "photo_id" clauses, and that the "country" clause can vary, but that these clauses are always all mandatory. in which case i would suggest using "fq" for all of them individually, and leaving your "q" param as "*:*" (unless you sometimes sort on the actual solr score, in which case leave it as whatever part of hte queyr you actually want to contribute to hte score) Lastly: I don't remember off the top of my head how "int" and "tinit" are defined in the example solrconfig files, but you should consider your usage of them carefully -- particularly with the precisionStep and which fields you do range queries on. -Hoss