# Help

## Search

You can search for definitions of modules, packages, classes, functions, methods and attributes.

These items can be searched using part or all of the name and/or from their docstrings if "search in docstrings" is enabled. Multiple search terms can be provided separated by whitespace.

The search is powered by lunrjs.

### Indexing

By default the search only matches on the name of the object. Enable the full text search in the docstrings with the checkbox option.

You can instruct the search to look only in specific fields by passing the field name in the search like `docstring:term`.

Possible fields are:

- `name`, the name of the object (example: "MyClassAdapter" or "my_fmin_opti").
- `qname`, the fully qualified name of the object (example: "lib.classses.MyClassAdapter").
- `names`, the name splitted on camel case or snake case (example: "My Class Adapter" or "my fmin opti")
- `docstring`, the docstring of the object (example: "This is an adapter for HTTP json requests that logs into a file...")
- `kind`, can be one of: "NAMESPACE_PACKAGE", "PACKAGE", "MODULE", "CLASS", "INTERFACE", "EXCEPTION", "CLASS_METHOD", "STATIC_METHOD", "METHOD", "FUNCTION", "CONSTANT", "TYPE_VARIABLE", "TYPE_ALIAS", "CLASS_VARIABLE", "SCHEMA_FIELD", "ATTRIBUTE", "INSTANCE_VARIABLE", "PROPERTY", "VARIABLE"

Last two fields are only applicable if "search in docstrings" is enabled.

### Other search features

Term presence.

  The default behaviour is to give a better ranking to object matching multiple terms of your query, but still show entries that matches only one of the two terms. To change this behavour, you can use the sign `+`.

  - To indicate a term must exactly match use the plus sing: `+`.
  - To indicate a term must not match use the minus sing: `-`.
Wildcards

  A trailling wildcard is automatically added to each term of your query if they don't contain an explicit term presence (`+` or `-`). Searching for `foo` is the same as searching for `foo*`.

  If the query include a dot (`.`), a leading wildcard will to also added, searching for `model.` is the same as `*model.*` and `.model` is the same as `*.model*`.

  In addition to this automatic feature, you can manually add a wildcard anywhere else in the query.

### Query examples

- "doc" matches "pydoctor.model.Documentable" and "pydoctor.model.DocLocation".
- "+doc" matches "pydoctor.model.DocLocation" but won't match "pydoctor.model.Documentable".
- "ensure doc" matches "pydoctor.epydoc2stan.ensure_parsed_docstring" and other object whose matches either "doc" or "ensure".
- "inp str" matches "java.io.InputStream" and other object whose matches either "in" or "str".
- "model." matches everything in the pydoctor.model module.
- ".web.*tag" matches "twisted.web.teplate.Tag" and related.
- "docstring:ansi" matches object whose docstring matches "ansi".

Report a bug or suggest an enhancement