# django-search-query > A reusable, Lucene-inspired search query language for Django – and an optional Django admin integration built on top of it. ## Documentation - [Tutorial](https://django-search-query.git-pull.com/tutorial/): This tutorial builds one search-enabled queryset from a raw string. You describe which fields a query is allowed to touch, compile a query string into a Django Q, and run it against a real QuerySet... - [Query language](https://django-search-query.git-pull.com/query/): You give your users a real search box – field-scoped terms, quoted phrases, boolean logic – and search_query_to_q() turns what they type into a Django Q. Pass that to any QuerySet and the ORM does ... - [Install](https://django-search-query.git-pull.com/install/): django-search-query is the core query language, independent of any particular UI, admin integration, or search backend; add it to any Django project’s environment. django-admin-search-query is the ... - [API reference](https://django-search-query.git-pull.com/api/): The public surface is small: one call for the common case, parse()/build_q() when you want the AST in between, a field registry, and one exception. The optional admin integration adds a single mixi... - [Packages](https://django-search-query.git-pull.com/packages/): The workspace ships two independently-installable, independently-versioned packages. The core query language stands on its own; the admin integration is opt-in and depends on it through a loose ver... - [Project](https://django-search-query.git-pull.com/project/): Development happens in a single uv workspace: one lockfile, one virtual environment, two publishable packages under packages/. - [Changelog](https://django-search-query.git-pull.com/history/): To install unreleased versions of a workspace package, see developmental releases. ## Documentation - [Colored search input](https://django-search-query.git-pull.com/packages/django-admin-search-query/colored-input/): The colored input is a progressive enhancement of the Django admin changelist search box. Highlighting is client-side: search-lexer.js is a faithful JavaScript port of the Python highlighter, so th... - [Explanation](https://django-search-query.git-pull.com/packages/django-admin-search-query/explanation/): django-admin-search-query depends on django-search-query through an ordinary version floor in its pyproject.toml (django-search-query>=0.1.0a0), the same way any other consumer of the query languag... - [How-to guides](https://django-search-query.git-pull.com/packages/django-admin-search-query/how-to/): SearchQueryAdminMixin is opt-in – drop it in front of a ModelAdmin on the changelists that need structured search, and leave every other admin untouched. - [django-admin-search-query](https://django-search-query.git-pull.com/packages/django-admin-search-query/): An optional Django admin integration for django-search-query – reach for it when you want a changelist search box that understands the structured query language; the core package works without it. - [Explanation](https://django-search-query.git-pull.com/packages/django-search-query/explanation/): A search string becomes a Q through three stages, each owned by one module. The tokenizer classifies characters into a token stream and records their source offsets, deferring every grammar decisio... - [How-to guides](https://django-search-query.git-pull.com/packages/django-search-query/how-to/): Task recipes for tuning search_query_to_q() beyond the tutorial’s defaults: which ORM path a field name resolves to, which fields a query may touch at all, how wildcards and ranges compile, and how... - [django-search-query](https://django-search-query.git-pull.com/packages/django-search-query/): A Lucene-inspired search query language that compiles to Django Q objects. - [Contributing](https://django-search-query.git-pull.com/project/contributing/): All shared tooling – ruff, ty, pytest, coverage – is configured once in the root pyproject.toml and applies to every package. - [Releasing](https://django-search-query.git-pull.com/project/releasing/): Each package is versioned and released independently. A release bumps one package’s version and records its changes in the shared root changelog – which consolidates both packages under one set of ...