: I have a more complex query condition like this:
: 
: (city:15 AND country:60)^4 OR city:15^2 OR country:60^2
: 
: What I want to achive with this query is basically if a document has
: city = 15 AND country = 60 it is more important then another document
: which only has city = 15 OR country = 60

what you've got there will do that, but to a lesser degree so will a 
simple query for both clausees...

  q=(city:15 country:60)

will score documents higher if they match both clauses then if the only 
match one becaues of the coord factor -- you can check the debuqQuery 
score explanations to see the details.  If you want the descrepencies in 
scores to be more significant, you can go the route you have, or you can 
customize the similarity to stricter about the coord factor, but that will 
apply to all boolean queries.

: Furhtermore I want to show in my results view why a certain document
: matched, something like "matched city and country" or "matched city
: only" or "matched country only".

this is a bit trickier, but thanks to the new psuedo-fields feature it 
will work in 4.0 (and already works on the trunk)...

any function can be specified in the "fl" param and each document returned 
will include the value that document has for that function -- so 
regardless of how complex or simple your main query is, you could use the 
"query(...)" function in the fl to see what score it gets against some 
other arbitrary function...

Here's an example URL using the example data/configs...

http://localhost:8983/solr/select?q=hard+drive&fl=score,id,name,is_canon:query%28{!v=%27manu_id_s:canon%27}%29


-Hoss

Reply via email to