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> >> >>