Sorry to say, but there's only so far you can go with this sort of problem, as you seem to want a swiss army knife with an infinitely expandable set of features, but without any pain on your part for programming:-) ! Such a thing is moderately possible, but given your wide open specification, recall that people spend years building out search engines like Lucene, Google and thousand others to solve this sort of problem.
That said, if you can be happy with a search tool that has a very simple rule that must be obeyed, AND you're using or have access to a Unix/Linux/Cygwin system, the following can work.
Basic rule: Blocks of data will be searched based on a blank like separating each block (as in you sample data above).
cat paraSearch.ksh
#!/bin/ksh
# (or #!/bin/bash or likely others)
case $# in 0 ) echo "usage:paraSearch.ksh SearchTargetPattern file2search [file2 ....]" ; exit 1 ;;esac
# read the first pattern as the search target,
# use quotes on cmd-line if you want to use
# regexp chars like '*'
mySrchPat="$1" ; shift
#dbg set -vx
awk -v mySrchPattern="$mySrchPat" \
'BEGIN{RS=""; ORS="\n\n"}
#dbg {print "$0="$0; print "----------------------------------------------" }
$0 ~ mySrchPattern{ print $0}
' "${@}"
chmod 755 paraSearch.ksh
test using your sample text and searchTarget AND the output
$ ./paraSearch.ksh SomeName multiLineTest.txt
001 [SomeTitle 1] - Some Subtitle 1
Name: SomeName
Area: SomeArea
Content: Some multi-line comment...Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Etiam scelerisque. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Etiam scelerisque.
To learn more about awk, read through (several times) this excellent tutorial: The Grymoire's Awk Tutorial.
IHTH