Object n1 = create("node");
setString(n1, "text", "Filter: " + fq.getFilter().toString());
add(n, n1);
_explainStructure(n, fq.getQuery());
} else if (q instanceof SpanQuery) {
SpanQuery sq = (SpanQuery)q;
Class sqlass = sq.getClass();
setString(n, "text", getString(n, "text") + ", field=" + sq.getField());
if (sqlass == SpanOrQuery.class) {
SpanOrQuery soq = (SpanOrQuery)sq;
setString(n, "text", getString(n, "text") + ", " + soq.getClauses().length + " clauses");
for (SpanQuery sq1 : soq.getClauses()) {
_explainStructure(n, sq1);
}
} else if (sqlass == SpanFirstQuery.class) {
SpanFirstQuery sfq = (SpanFirstQuery)sq;
setString(n, "text", getString(n, "text") + ", end=" + sfq.getEnd() + ", match:");
_explainStructure(n, sfq.getMatch());
} else if (q instanceof SpanNearQuery) { // catch also known subclasses
SpanNearQuery snq = (SpanNearQuery)sq;
setString(n, "text", getString(n, "text") + ", slop=" + snq.getSlop());
if (snq instanceof PayloadNearQuery) {
try {
java.lang.reflect.Field function = PayloadNearQuery.class.getDeclaredField("function");
function.setAccessible(true);
Object func = function.get(snq);
setString(n, "text", getString(n, "text") + ", func=" + func.getClass().getSimpleName());
} catch (Exception e) {
e.printStackTrace();
}
}
for (SpanQuery sq1 : snq.getClauses()) {
_explainStructure(n, sq1);
}
} else if (sqlass == SpanNotQuery.class) {
SpanNotQuery snq = (SpanNotQuery)sq;
Object n1 = create("node");
add(n, n1);
setString(n1, "text", "Include:");
_explainStructure(n1, snq.getInclude());
n1 = create("node");
add(n, n1);
setString(n1, "text", "Exclude:");
_explainStructure(n1, snq.getExclude());
} else if (q instanceof SpanTermQuery) {
SpanTermQuery stq = (SpanTermQuery)sq;
setString(n, "text", getString(n, "text") + ", term=" + stq.getTerm());
if (stq instanceof PayloadTermQuery) {
try {
java.lang.reflect.Field function = PayloadTermQuery.class.getDeclaredField("function");
function.setAccessible(true);
Object func = function.get(stq);
setString(n, "text", getString(n, "text") + ", func=" + func.getClass().getSimpleName());
} catch (Exception e) {
e.printStackTrace();
}
}
} else {
String defField = getDefaultField(find("srchOptTabs"));
setString(n, "text", "class=" + q.getClass().getName() + ", " + getString(n, "text") + ", toString=" + q.toString(defField));
HashSet<Term> terms = new HashSet<Term>();
sq.extractTerms(terms);
Object n1 = null;
if (terms != null) {
n1 = create("node");
setString(n1, "text", "Matched terms (" + terms.size() + "):");
add(n, n1);