docuflow-ai offers three ways to find documents, all powered by OpenSearch. Pick the one that matches what you know about the document you're looking for.
| Mode | Finds documents by | Where | Credits |
|---|---|---|---|
| Keyword | Exact words in the name, uploader or content (BM25 ranking with highlights). | Header search box | No |
| Semantic | Meaning: combines keyword matching with vector similarity, so "shipping cost" also finds "freight charges". | Header search box | No |
| AI | A plain-language question turned into a field-level query on a document type's extracted data. | Search page | Yes |
Keyword and semantic search#
- Choose the mode in the drop-down next to the header search box (Keyword search or Semantic search).
- Limit the fields (keyword mode) with the sliders icon: document name, uploader name and/or content.
- Type your text and press the search button. Results open in a grid with the matching passages highlighted.
AI search (natural language)#
Open Search from the left menu.
- Choose a document type. AI search works on one type at a time because it queries that type's extracted fields. Index status shows how many documents are searchable; Index fields lists the fields you can ask about.
- Ask in your own words, for example:
- Invoices from Marble Systems issued in August
- Purchase orders with a line item containing "pencil"
- Bank statements with a closing balance under 500
- Click Search. AI writes an OpenSearch query from your question; it is shown under OpenSearch query and the matching documents appear in the grid.
- Refine the generated query with the query builder (or edit the JSON) and click Run query. Running an edited query does not call AI again.
The query builder#
The builder shows the query as groups of conditions joined by AND / OR. You can add, remove and nest conditions without writing JSON. Available operators depend on the field type:
| Field type | Operators |
|---|---|
| Text | equals, not equals, contains, does not contain, starts with, ends with, in, not in, is empty, is not empty |
| Number | equals, not equals, greater than (or equal), less than (or equal), between, not between, in, not in, is empty, is not empty |
| Date | equals, not equals, greater than (or equal), less than (or equal), between, not between, is empty, is not empty |
| Boolean | equals, not equals, is empty, is not empty |
Conditions on fields inside an array (such as lineItems.description) are evaluated per array element, so
description contains pencil AND quantity > 10 only matches when both are true on the same line.
What is searchable when#
| Document status | Keyword | Semantic | AI search |
|---|---|---|---|
| Before Indexed | — | — | — |
| Indexed | Yes | Yes | — |
| Searchable | Yes | Yes | Yes |
If AI search returns nothing, check Index status: the type must have an index and its documents must have finished JSON mapping. See Search indexes.
Search history#
Each AI search is recorded as an AI job with the generated query, so you can review past questions under AI Jobs.