Проблема с результатами заключается в том, что Lucene собирает не все, а только N лучших результатов (N установлено вами). И это хорошая идея, поскольку она значительно сокращает время поиска и дает только те результаты, которые могут вас заинтересовать. Хотя вы можете установить N на очень большое число, выполнить один поиск для каждого термина в запросе и затем объединить результаты, я на самом деле не рекомендую делать это.
С другой стороны, Вы можете объединить свои термины до поиска , а не после. Я не знаком с зигзагообразным объединением, но, скорее всего, вам придется создать новый синтаксис для запроса и заставить QueryParser
использовать ZigZagQuery
(или как вы его называете). Примеры реализации см. Подклассы запросов Исходный код.