Один из способов сделать это - создать фильтр на основе вашего запроса abc, а затем использовать этот фильтр для ограничения результатов для запросов подтипа.
IndexSearcher searcher = // searcher to use
int nDocs = 100; // number of docs to retrieve
QueryParser parser = // query parser to use
Query typeQuery = parser.parse("type:abc");
Filter f = CachingWrapperFilter(new QueryWrapperFilter(typeQuery));
Query subtypeQuery = parser.parse("sub_type:xyz");
TopDocs results = searcher.search(subtypeQuery, f, nDocs);
Еще одна мысль: если вы знаете,-перед тем, какой подтип вас интересует, вы можете просто добавить в запрос и тип, и подтип: +type:abc +sub_type:xyz
.
Наконец, вы можете рассмотреть возможность использования Solr для индексации ваших данных, если у вас есть такие запросы.