I studied the results with debugQuery, and I understand how the search
is working. The two scores for the two terms are added together, so
specifying a boost less than one still adds to the score. For
instance, in the first result, content:notes has a score of 1.4892359
and genre:Citation^0.01 has a score of 0.0045761107. Those two numbers
are added together to get the total score.

I tried putting a negative boost number in, but that isn't legal.

Is there a way to express "genre does not equal Citation" as an
optional parameter that I can boost?

On Mon, Oct 31, 2011 at 2:26 PM, Paul <p...@nines.org> wrote:
> I had been experimenting with bq.
>
> I switched to boost like you suggested, and get the following error
> from solr: "can not use FieldCache on multivalued field: genre"
>
> But that sounds like the solution I'd want, if it worked, since it's
> more flexible than having to reindex.
>
> On Mon, Oct 31, 2011 at 10:41 AM, Erik Hatcher <erik.hatc...@gmail.com> wrote:
>> Paul - look at debugQuery=true output to see why scores end up the way they 
>> do.  Use the explainOther to hone in on a specific document to get it's 
>> explanation.  The math'll tell you why it's working the way it is.  It's 
>> more than just likely that some other scoring factors are overweighting 
>> things.
>>
>> Also, now that I think about it, you'd be better off leveraging edismax and 
>> the boost parameter.  Don't mess with your main q(uery), use 
>> boost=genre:Citation^0.01 or something like that.  boost params (not bq!) 
>> are multiplied into the score, not added.  Maybe that'll be more to your 
>> liking?
>>
>>        Erik
>>
>>
>> On Oct 31, 2011, at 10:19 , Paul wrote:
>>
>>> Thanks Erik. They don't need to absolutely always be the bottom-most
>>> -- just not near the top. But that sounds like an easy way to do it,
>>> especially since it is a lot easier to reindex now than it used to be.
>>>
>>> I would like to know why my query had no effect, though. There's
>>> obviously something I don't get about queries.
>>>
>>> On Mon, Oct 31, 2011 at 10:08 AM, Erik Hatcher <erik.hatc...@gmail.com> 
>>> wrote:
>>>> Paul (*bows* to the NINES!) -
>>>>
>>>> If you literally want Citations always at the bottom regardless of other 
>>>> relevancy, then perhaps consider indexing boolean top_sort as true for 
>>>> everything Citations and false otherwise, then use &sort=top_sort 
>>>> asc,score desc (or do you need to desc top_sort?  true then false or false 
>>>> then true?)
>>>>
>>>> Then you can have Citations literally at the bottom (and within that 
>>>> sorted in score order) and likewise with non-Citations at the top and 
>>>> sorted score order within that.  Other tricks still risk having Citations 
>>>> mixed in should relevancy score be high enough.
>>>>
>>>> The morale of this story is: if you want to hard sort by something, then 
>>>> make a sort field that does it how you like rather than trying to get 
>>>> relevancy scoring to do it for you.
>>>>
>>>>        Erik
>>>>
>>>>
>>>> On Oct 28, 2011, at 17:17 , Paul wrote:
>>>>
>>>>> (I am using solr 3.4 and edismax.)
>>>>>
>>>>> In my index, I have a multivalued field named "genre". One of the
>>>>> values this field can have is "Citation". I would like documents that
>>>>> have a genre field of Citation to always be at the bottom of the
>>>>> search results.
>>>>>
>>>>> I've been experimenting, but I can't seem to figure out the syntax of
>>>>> the search I need. Here is the search that seems most logical to me
>>>>> (newlines added here for readability):
>>>>>
>>>>> q=%2bcontent%3Anotes+genre%3ACitation^0.01
>>>>> &start=0
>>>>> &rows=3
>>>>> &fl=genre+title
>>>>> &version=2.2
>>>>> &defType=edismax
>>>>>
>>>>> I get the same results whether I include "genre%3ACitation^0.01" or not.
>>>>>
>>>>> Just to see if my names were correct, I put a minus sign before
>>>>> "genre" and it did, in fact, stop returning all the documents
>>>>> containing Citation.
>>>>>
>>>>> What am I doing wrong?
>>>>>
>>>>> Here are the results from the above query:
>>>>>
>>>>> <response>
>>>>>  <lst name="responseHeader">
>>>>>    <int name="status">0</int>
>>>>>    <int name="QTime">1</int>
>>>>>    <lst name="params">
>>>>>      <str name="fl">genre title </str>
>>>>>      <str name="start">0</str>
>>>>>      <str name="q">+content:notes genre:Citation^0.01</str>
>>>>>      <str name="rows">3</str>
>>>>>      <str name="version">2.2</str>
>>>>>      <str name="defType">edismax</str>
>>>>>    </lst>
>>>>>  </lst>
>>>>>  <result name="response" numFound="1276" start="0">
>>>>>    <doc>
>>>>>      <arr name="genre"><str>Citation</str><str>Fiction</str></arr>
>>>>>      <str name="title">Notes on novelists With some other notes</str>
>>>>>    </doc>
>>>>>    <doc>
>>>>>      <arr name="genre"><str>Citation</str></arr>
>>>>>      <str name="title">Novel notes</str>
>>>>>    </doc>
>>>>>    <doc>
>>>>>      <arr name="genre"><str>Citation</str></arr>
>>>>>      <str name="title">Knock about notes</str>
>>>>>    </doc>
>>>>>  </result>
>>>>> </response>
>>>>
>>>>
>>
>>
>

Reply via email to