Hi, I maintain a distributed system which Solr is part of. The data which is kept is Solr is "permissioned" and permissions are currently implemented by taking the original user query, adding certain bits to it which would make it return less data in the search results. Now I am at the point where I need to go over this functionality and try to improve it.
Changing this to send two separate queries (q=...&fq=...) would be the first logical thing to do, however I was thinking of an extra improvement. Instead of generating filter query, converting it into a String, sending over the HTTP just to parse it by Solr again - would it not be better to take generated Lucene fq query, serialize it using Java serialization, convert it to, say, Base64 and then send and deserialize it on the Solr end? Has anyone tried doing any performance comparisons on this topic? I am particularly concerned about this because in extreme cases my filter queries can be very large (1000s of characters long) and we already had to do tweaks as the size of GET requests would exceed default limits. And yes, we could move to POST but I would like to minimize both the amount of data that is sent over and the time taken to parse large queries. Thanks in advance. m.