Запрос выглядит как "найти группу, для которой в одном документе есть один текст, а в другом (или том же) - другой". Сдается мне, что надо делать индекс, в котором документ - это группа, и искать просто оба совпадения сразу. Почему так:
- Если искать по "И", то найдутся только документы группы, в которых есть и тот и другой текст (т.е. ситуация "в другом документе второй текст" не находится)
- Если искать по "ИЛИ" а потом отфильтровывать результаты по HAVING COUNT(*) > 1, то попадают лишние результаты (2 документа с первым текстом)