9.1 introduced a new sort method - you can sort alphabetically (pretty much the old method) or you can sort by relevance. This is available in the options, and (I think) the default is to sort by relevance.
When you sort alphabetically, it uses the Location, Rank and OrderString properties of the LookupItemPlacement class. It first sorts by Location (Top, Bottom or Generic) and then sorts by Rank, and finally by OrderString. You probably only need to set OrderString. You can force things to the top or bottom by changing the Location, and use Rank to make Top and Bottom relative to other items.
When sorting by relevance, items are sorted by Relevance, and then OrderString. Again, setting OrderString is the most important, but Relevance should be set, too. All items have a relevance set from flags in the LookupItemRelevance enum. The lower 16 bits and top 16 bits are for language independent relevance flags (exact match, prefix match, from double completion, etc) and the 32 bits in the middle are for language dependent relevance (e.g. CLRLookupItemReference - enum members, local variable, types and namespaces, etc. or CssLookupItemRelevance, HtmlLookupItemRelevance, etc.). The default relevance flags are set automatically for you, but you'll need to set any language specific values. Once you've set relevance, this sorts "groups" of items higher or lower in the list, or you can include them in an existing "group" and use the OrderString to sort - and of course, OrderString can be different to the display string.
Regards
Matt