hi all,
I need help simplifying my query. The doc structure is as follows.

docStructure
id A
cat : p, q, r

id B
cat : m, n ,o

id C
cat: l,b, o

Now given this structure my job is to find documents which have cat ids 
belonging to a list. Right now this is achieved in this fashion using OR of 
multiple queries. given list [p,n,o ] and ranked in the order.

  Query 1:  q : cat:p ---> doc:A
  Query 2 : q : cat n AND !(cat:p) --> B
  Query 3 : q   (cat o AND !(cat:p) AND (cat:n)) --> C

final query = query1^3 OR query2^2 OR query3^1 

this is to ensure the ranking is A,B,C

The query is pretty complicated and gets very long too so I would want to
form a shorter version of it if possible. There are just two constraints.

     a: the highest preference is given to doc with cat:p even if some other
matches all the other terms. so A should be higher than B(even when B
matches both n and o) .

     b. Also if there are two docs which have match on first cat :p, they
should have equal score irrespective of rest of values of cat. For example
consider an additional document D  
 
id : D
cat :[p,n,o]

Now D and A  both match on first cat p and therefore the fact that D also
matches on n and o should not matter and both A and D should have same
score.

Please let me know if there is a simple way of doing it.









--
View this message in context: 
http://lucene.472066.n3.nabble.com/How-to-simplifying-my-query-for-appropriate-scoring-tp4140913.html
Sent from the Solr - User mailing list archive at Nabble.com.

Reply via email to