anchor.diff:  query_product(Cont, '_' = _MatchId, MatchOffer, MatchService) ->
   	 MatchHead = #product{_ = '_'},
   	query_product1(Cont, MatchHead, MatchOffer, MatchService);
  -query_product(Cont, {like, String}, MatchOffer, MatchService) when is_list(String) ->
  +query_product(Cont, {Op, String}, MatchOffer, MatchService)
  +		when is_list(String), ((Op == exact) orelse (Op == like)) ->
   	MatchHead = case lists:last(String) of
  -		$% ->
  +		$% when Op == like ->
   			Prefix = lists:droplast(String),
   			#product{id = Prefix ++ '_', _ = '_'};
   		_ ->
  
positive.code: query_bucket(Cont, '_' = _MatchId, MatchProduct) ->
  	MatchSpec = [{'_', [], ['$_']}],
  	query_bucket1(Cont, MatchSpec, MatchProduct);
  query_bucket(Cont, {like, Id}, MatchProduct) when is_list(Id) ->
  	MatchSpec = case lists:last(Id) of
  		$% ->
  			Prefix = lists:droplast(Id),
  			MatchHead = #bucket{id = Prefix ++ '_', _ = '_'},
  			[{MatchHead, [], ['$_']}];
  
negative.code: query_service(Cont, MatchId, '_') ->
  	MatchSpec = [{'_', [], ['$_']}],
  	query_service1(Cont, MatchSpec, MatchId);
  query_service(Cont, MatchId, {Op, String} = _MatchProduct)
  		when is_list(String), ((Op == exact) orelse (Op == like)) ->
  	Product = case lists:last(String) of
  		$% when Op == like ->
  			lists:droplast(String) ++ '_';
  		_ ->
           String
  