There is no need to write a custom trimmer in 2010 (i am not sure about 2013) as you can impersonate the user and query search as if you were her. 

Helper classes:

    public class WindowsImpersonation : IDisposable {

        public readonly bool impersonated = false;

        private WindowsImpersonationContext wic  = null;

        //upn is the user account in the form of [email protected]
        //ntAccount is not required but is used to prevent unnecessary impersonation
        public WindowsImpersonation(string upn, string ntAccount = "") {

            //see if impersonation is required
            WindowsIdentity current = WindowsIdentity.GetCurrent();
            if ( current != null && current.Name.Equals(ntAccount, StringComparison.OrdinalIgnoreCase) ) {
                return; //nope
            } 

            try {

                //
                // current user account must have the following permissions:
                //      - Act as Part of the Operating System
                //      - Impersonate a client after authentication
                //
                //  gpedit.msc -> local computer -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment


                //impersonate user
                wic = (new WindowsIdentity(upn)).Impersonate();
                impersonated = true;
            } catch(Exception) {
                Dispose();
                throw;
            }

        }


        public void Dispose() {
            if (wic != null) {
                wic.Undo();
                wic = null;
            } 
        }

    }

	public static class Extensions_User_Impersonate {

		 public static IDisposable Impersonate(this User user) {
			 return new WindowsImpersonation(user.upn, user.ntAccount);
		 }

	}


	
Example:	

	//elevate, impersonate and search:
	using (HostingEnvironment.Impersonate()){
		using (user.Impersonate()) {
			return SP.KeywordQuery(query);
		}
	};

	//or
	SPSecurity.RunWithElevatedPrivileges(() => {
		using (user.Impersonate()) {
			//Search code goes here
		}
	});
	
(some associated classes not included and some comments redacted)