anchor.diff:  %%
   
   %% solrfield=field:value
  +map_search_field({solr_field, [_, Value]}, _Context)
  +  when Value =:= undefined orelse Value =:= [] ->
  +    {[], []};
   map_search_field({solr_field, [Field, Value]}, _Context) ->
  -    {["", z_convert:to_list(Field), ":", z_convert:to_list(Value)],
  +    {["+", z_convert:to_list(Field), ":", z_convert:to_list(Value)],
        []};
   
   %% highlight=<field>
  
positive.code: %% authoritative={true|false}
  %% Filter on items which are authoritative or not
  map_search_field({authoritative, Bool}, _Context) ->
      {["is_authoritative:", z_convert:to_bool(Bool)],
       []};
  
  %% query_id=<rsc id>
  
negative.code: map_search_field({hassubject, Id}, _Context) when is_integer(Id) ->
      map_search_field({hassubject, [Id]}, _Context);
  map_search_field({hassubject, [Id]}, _Context) ->
      {["+s:", z_convert:to_list(Id)],
       []};
  
  %% hassubject=[id,predicate,[alias]]
  %% Give all things which have an outgoing edge to Id with the given predicate
  map_search_field({hassubject, [Id, Predicate]}, _Context) ->
      {["+s_", z_convert:to_list(Predicate), ":", z_convert:to_list(Id)],
       []};
  map_search_field({hassubject, L}, _Context) when is_list(L) ->
      map_search_field({hassubject, [z_convert:to_integer(L)]}, _Context);
  