## What's new in CorpusSearch 2

- New
  - Search functions
    - dominates
    - hasSister
    - iDomsMod
    - isRoot
    - sameIndex
  - Boundary nodes
    - $ROOT
    - METAROOT
  - Print commands
    - print_only
    - reformat_corpus
  - Functionality
    - Local frames
    - Lexicon building
    - Automated corpus revision
  - Logical operators (deprecated)
    - NOT
    - OR
- Changes
  - Ordinary queries
  - Coding queries
- Discontinued functions

### Changes in ordinary queries

- In CorpusSearch 1, consecutive queries had to be appended one at a time:

  >     query:  ((((A function B)
  >            AND (C function D))
  >            AND (E function F))
  >            AND (G function H))

  In CorpusSearch 2, queries can be appended with any logical combination of parentheses. The above query is more easily written:

  >     query:     (A function B)
  >            AND (C function D)
  >            AND (E function F)
  >            AND (G function H)

  Old-style queries continue to be interpreted correctly.

- Search functions that take an integer argument are now written with a space before the argument. For example:

  >     query: (CODING column 2 q)

  instead of:

  >     query: (CODING column2 q)      ← OBSOLETE

  This change affects the following functions:

  - column
  - domsWords, domsWords<, domsWords>
  - iDomsNumber
  - iDomsTotal, iDomsTotal<, iDomsTotal>

### Changes in coding queries

- Coding can now be performed once per boundary node, instead of once per sentence token.

- The "coding_query" command must now precede the body of the coding query.

### Discontinued functions

- anyPrecedes (superseded by precedes)
- iDoms_conj_switch (superseded by iDomsMod)
- print_complement (superseded by NOT)