Additional classes

When it interacts with the Expert Advice code, the wrapper code can refer to two classes, QueryLevel and ItemSet.

QueryLevel

The app generates a series of queries that are based on the set of columns that the user specifies. The precision of the queries varies and the queries are ordered to reflect the precision of the results. The order is such that a query at a higher-level yields more accurate results that a lower-level query. The QueryLevel class captures the ordering of the queries. Some queries can yield results with the same level of precision without yielding the same results. The QueryLevel class can contain more than one query for this reason.

This class is defined as:
package foo.bar.example.loganalytics.artifacts;
public class QueryLevel<T> extends ArrayList<ItemSet<T>>

Each ItemSet object that is contained in a QueryLevel object represents a group of terms that must all occur on the same page. You must use an AND query for these terms.

If there is more than one ItemSet object in a QueryLevel object, you must use an OR query to separate the individual AND queries. For example:
(ItemSet_1_Term_1 AND ItemSet_1_Term_2) OR (ItemSet_2_Term_1 AND ItemSet_2_Term_2) 

The syntax that specifies the AND and OR logic is specific to the knowledge source and is handled by the wrapper code.

ItemSet

The ItemSet class represents a single group of terms that must all occur in the same results page. You must use an AND query for this class.

This class is defined as:
package foo.bar.example.loganalytics.partialorder;
public class ItemSet<T> extends HashSet<T>