private OntologyHits searchQuery(String idFieldName, boolean includeCyclic) throws IOException {
BooleanQuery query = new BooleanQuery();
query.add(new TermQuery(new Term(idFieldName, id)), BooleanClause.Occur.MUST);
query.add(new TermQuery(new Term(FieldName.RELATIONSHIP_CYCLIC, String.valueOf(includeCyclic))), BooleanClause.Occur.MUST);
query.add(new TermQuery(new Term(FieldName.RELATIONSHIP_TYPE, "OBO_REL:is_a")), BooleanClause.Occur.MUST);
if (!includeCyclic) {
query.add(new TermQuery(new Term(FieldName.RELATIONSHIP_TYPE, "disjoint_from")), BooleanClause.Occur.MUST_NOT);
}
final Hits hits = searcher.search(query, new Sort(FieldName.CHILDREN_NAME_SORTABLE));
final OntologyHits ontologyHits = new OntologyHits(hits);
return ontologyHits;
}