Rather than just having one big body field, and trying to apply weights to segments within the field, you should define multiple fields for the different sections of the document. You can apply to boost to a field at index time simply enough, with Field.setBoost
.
To conveniently search over all of those fields, you can use MultiFieldQueryParser
.