Not quite.
The way my script works is to create a list of all the files in the source folder. This has the variable name the_files.
The script loops through each of these files in turn, allocating the variable name of each_file to the next file in the list, and duplicating it only if a file with the same name doesn't exist in the target folder.
You're on the right lines if you want to filter the files by keywords in the name, but you still need to loop. Something like this could work. I've used your variable name this_file instead of my name each_file. It also checks for an existing file before duplication:
tell application "Finder"
set the_files to files of source_folder
repeat with this_file in the_files
set this_file_name to name of this_file
if this_file_name contains "keyword" then
if (not exists file this_file_name of target_folder) then
duplicate this_file to target_folder
end if
end if
end repeat
end tell
Hope this helps.