hello @SupportMember
In your case, the primary type of the content is different
Page: cq:Page
XF: cq:Page
CF: dam:Asset
I would suggest to break the Query into 2 pieces.
1. Pages + XF: Here you can use the path predicate to specifically query these Page and XF
1_group.1_path=/content/site/<path of the page>
1_group.2_path=/content/<path of XF>
1_group.p.or=true
fulltext=abc
type=cq:Page
2. If the text is not found above, check in CF
path=/content/<path of CF>
fulltext=abc
type=dam:Asset
This would assure that the queries perform well and use the correct indexes
Aanchal Sikka