No, it's keywords "in" that assigns the terminus to the current phrase so to speak.
The first would look like this, if I understand you correctly:
let f x = { field1 = match x with _ -> true | field2 = 2} in
But there are several problems with the above statement. First, you used a semicolon in place of a |, and a | expresses to the match statement what the various cases are. As in,
match x with | case1 ... | case 2 | ...
Second, alternatively to that interpretation, you might want it to be that you match within the assignment like this:
let f x = { field1 = (match x with ... ); field2 = ... } in
A problem is that you used match x with _ -> true | field2, but the _ is the catchall keyword, so field2 is never going to get hit. What you've expressed in the second let statement is equivalent to this:
let f1 = match x with _ -> true in
let f x = { field1 = f1; field2.... }