Hi Amit, Thanks again for your reply. I am understanding it a bit better but I think it would help if I posted an example. Say I have three records:
<doc> <long name="id">1</long> <str name="media">BLU-RAY</str> <str name="title">Indiana Jones and the Kingdom of the Crystal Skull</str> </doc> <doc> <long name="id">2</long> <str name="media">DVD</str> <str name="title">Indiana Jones and the Kingdom of the Crystal Skull</str> </doc> <doc> <long name="id">3</long> <str name="media">DVD</str> <str name="title">Casino Royale</str> </doc> Now, if I search for indiana: select?q=indiana I want the first two rows to come back (not the third as it does not contain 'indiana'). I would like record 2 to be scored higher than record 1 as it's media type is DVD. At the moment I have in my config: <str name="qf">title</str> And i was trying to boost by media having a specific value by using 'bq' but from what you told me that is incorrect. Cheers, Pete On Fri, 2009-03-13 at 03:21 -0700, dabboo wrote: > Pete, > > Sorry, if wasnt clear. Here is the explanation. > > Suppose you have 2 records and they have films and media as 2 columns. > > Now first record has values like films="Indiana" and media="blue ray" > and 2nd record has values like films="Bond" and media="Indiana" > > Values for qf parameters > > <str name="qf">media^2.0 films^1.0</str> > > Now, search for q=Indiana .. it should display both of the records but > record #2 will display above than the 1st. > > Let me know if you still have questions. > > Cheers, > amit > > > Pete Smith-3 wrote: > > > > Hi Amit, > > > > Thanks very much for your reply. What you said makes things a bit > > clearer but I am still a bit confused. > > > > On Thu, 2009-03-12 at 23:14 -0700, dabboo wrote: > >> If you want to boost the records with their field value then you must use > >> q > >> query parameter instead of q.alt. 'q' parameter actually uses qf > >> parameters > >> from solrConfig for field boosting. > > > >>From the documentation for Dismax queries, I thought that "q" is simply > > a keyword parameter: > > > >>From http://wiki.apache.org/solr/DisMaxRequestHandler: > > q > > The guts of the search defining the main "query". This is designed to be > > support raw input strings provided by users with no special escaping. > > '+' and '-' characters are treated as "mandatory" and "prohibited" > > modifiers for the subsequent terms. Text wrapped in balanced quote > > characters '"' are treated as phrases, any query containing an odd > > number of quote characters is evaluated as if there were no quote > > characters at all. Wildcards in this "q" parameter are not supported. > > > > And I thought 'qf' is a list of fields and boost scores: > > > >>From http://wiki.apache.org/solr/DisMaxRequestHandler: > > qf (Query Fields) > > List of fields and the "boosts" to associate with each of them when > > building DisjunctionMaxQueries from the user's query. The format > > supported is fieldOne^2.3 fieldTwo fieldThree^0.4, which indicates that > > fieldOne has a boost of 2.3, fieldTwo has the default boost, and > > fieldThree has a boost of 0.4 ... this indicates that matches in > > fieldOne are much more significant than matches in fieldTwo, which are > > more significant than matches in fieldThree. > > > > But if I want to, say, search for films with 'indiana' in the title, > > with media=DVD scoring higher than media=BLU-RAY then do I need to do > > something like: > > > > solr/select?q=indiana > > > > And in my config: > > > > <str name="qf">media^2</str> > > > > But I don't see where the actual *contents* of the media field would > > determine the boost. > > > > Sorry if I have misunderstood what you mean. > > > > Cheers, > > Pete > > > >> Pete Smith-3 wrote: > >> > > >> > Hi, > >> > > >> > I have managed to build an index in Solr which I can search on keyword, > >> > produce facets, query facets etc. This is all working great. I have > >> > implemented my search using a dismax query so it searches predetermined > >> > fields. > >> > > >> > However, my results are coming back sorted by score which appears to be > >> > calculated by keyword relevancy only. I would like to adjust the score > >> > where fields have pre-determined values. I think I can do this with > >> > boost query and boost functions but the documentation here: > >> > > >> > > >> http://wiki.apache.org/solr/DisMaxRequestHandler#head-6862070cf279d9a09bdab971309135c7aea22fb3 > >> > > >> > Is not particularly helpful. I tried adding adding a bq argument to my > >> > search: > >> > > >> > &bq=media:DVD^2 > >> > > >> > (yes, this is an index of films!) but I find when I start adding more > >> > and more: > >> > > >> > &bq=media:DVD^2&bq=media:BLU-RAY^1.5 > >> > > >> > I find the negative results - e.g. films that are DVD but are not > >> > BLU-RAY get negatively affected in their score. In the end it all seems > >> > to even out and my score is as it was before i started boosting. > >> > > >> > I must be doing this wrong and I wonder whether "boost function" comes > >> > in somewhere. Any ideas on how to correctly use boost? > >> > > >> > Cheers, > >> > Pete > >> > > >> > -- > >> > Pete Smith > >> > Developer > >> > > >> > No.9 | 6 Portal Way | London | W3 6RU | > >> > T: +44 (0)20 8896 8070 | F: +44 (0)20 8896 8111 > >> > > >> > LOVEFiLM.com > >> > > >> > > >> > > -- > > Pete Smith > > Developer > > > > No.9 | 6 Portal Way | London | W3 6RU | > > T: +44 (0)20 8896 8070 | F: +44 (0)20 8896 8111 > > > > LOVEFiLM.com > > > > > -- Pete Smith Developer No.9 | 6 Portal Way | London | W3 6RU | T: +44 (0)20 8896 8070 | F: +44 (0)20 8896 8111 LOVEFiLM.com