A postings list is a sequence of records associated with a single indexed term in an inverted index. Each record, or posting, typically contains a document ID and optional payload data such as term frequency, a list of positional offsets for phrase matching, and field-level statistics. During query evaluation, the search engine traverses the postings lists for each query term to identify candidate documents and compute a relevance score, avoiding a full collection scan.
Glossary
Postings List

What is a Postings List?
A postings list is the core data structure within an inverted index that stores, for a specific term, a sorted list of document identifiers and associated metadata required for relevance scoring.
The internal structure of a postings list is highly optimized for fast intersection and union operations. Document IDs are stored in a compressed, sorted order using techniques like delta encoding and variable-byte coding to minimize disk I/O. For advanced ranking functions like BM25, the list stores the within-document term frequency, enabling the engine to apply the non-linear saturation function directly from the index data without revisiting the original document text.
Key Characteristics of a Postings List
A postings list is the core data structure that makes full-text search efficient. It stores the mapping from a term to the documents containing it, along with the metadata required for relevance scoring.
Document Identifier Storage
At its simplest, a postings list is a sorted array of document IDs where a specific term appears. This sorted structure enables fast intersection and union operations using galloping search or SIMD-accelerated algorithms. For a term like 'algorithm', the list might contain [2, 5, 17, 42, 103], indicating the documents that contain the word. The sorting is critical for efficient Boolean retrieval and allows compression via delta encoding, where only the gaps between consecutive IDs are stored.
Term Frequency Data
To support ranking functions like BM25, a postings list stores the term frequency (TF) for each document. This is the raw count of how many times the term appears in that specific document. A typical entry becomes a pair: (docID, frequency). For example, (42, 3) means the term appears three times in document 42. This data is essential for the saturation function in BM25, which models the non-linear gain in relevance from additional term occurrences.
Positional Information
For phrase matching and proximity queries, a postings list often includes the exact byte or word positions of the term within each document. An entry expands to (docID, frequency, [pos1, pos2, ...]). If a user searches for 'machine learning', the engine can verify that 'machine' and 'learning' appear adjacently by checking their position arrays. This data structure is a significant storage overhead but is mandatory for supporting exact phrase queries.
Skip Pointers for Query Speed
To avoid scanning an entire postings list during intersection operations, modern implementations like Apache Lucene use skip pointers. These are additional data structures that allow the search engine to jump ahead to a specific document ID without reading every entry. A skip pointer at index i stores the document ID at that position and the byte offset to jump to. This optimization is crucial for making Boolean AND queries over high-frequency terms like 'the' and 'company' execute in sub-millisecond time.
Compression Techniques
Postings lists can consume significant memory and disk space. They are heavily compressed using techniques like Variable Byte Encoding or PForDelta (Patched Frame of Reference). Delta encoding converts the sorted document ID list [2, 5, 17, 42] into gaps [2, 3, 12, 25], which are smaller integers. These gaps are then packed into the fewest possible bits. This compression is lossless and allows the inverted index to fit in system page caches for maximum performance.
Payloads and Field Metadata
Advanced implementations allow attaching arbitrary payloads to each term occurrence. A payload is a byte array that can store custom scoring factors, such as a boost weight for terms in a document's title versus its body. In a structured document, the postings list may also encode which field the term appeared in. This enables BM25F, where a match in the 'title' field contributes more to the relevance score than a match in the 'body' field.
Frequently Asked Questions
A postings list is a fundamental data structure within an inverted index that maps a specific term to the set of documents containing it. Understanding its structure is critical for optimizing query evaluation speed and storage efficiency in large-scale search systems.
A postings list is a sorted sequence of document identifiers (doc IDs) and associated metadata that represents every occurrence of a specific term within a document collection. It is the core value in an inverted index's dictionary structure. When a search engine processes a query, it does not scan every document; instead, it looks up the query terms in the dictionary and fetches their corresponding postings lists. The engine then traverses these lists to find documents that contain all (or some) of the query terms. The list is typically sorted by doc ID to enable efficient intersection (AND) and union (OR) operations using merge algorithms. Beyond just the doc ID, a postings list often stores:
term frequency: The count of the term in that specific document.positional data: The exact byte or word offsets where the term appears, enabling phrase matching.field data: In structured search, which field (e.g., title vs. body) the term appeared in. This structure allows the scoring function, such as BM25, to quickly calculate relevance without decompressing the original text.
Postings List vs. Forward Index
A structural and functional comparison of the two primary index types used in information retrieval systems.
| Feature | Postings List | Forward Index |
|---|---|---|
Primary Orientation | Term-centric | Document-centric |
Core Data Structure | Inverted Index | Document-to-Term Map |
Primary Use Case | Query evaluation and relevance scoring | Document analysis and field retrieval |
Storage Key | Term ID | Document ID |
Stored Value | List of Document IDs with term frequency and positions | List of Term IDs with term frequency and positions |
Query Speed | O(1) term lookup, then O(n) document traversal | O(n) document lookup, unsuitable for ad-hoc queries |
Supports Boolean Retrieval | ||
Supports Phrase Matching |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Related Terms
Core data structures and retrieval concepts that interact directly with the postings list during query evaluation and relevance scoring.
Inverted Index
The database index that houses the postings list. It maps each unique term to its postings list, enabling constant-time lookup during query processing. Without an inverted index, a search engine would need to scan every document sequentially. The structure consists of a dictionary (sorted vocabulary) and postings files (the lists themselves).
Skip List
An optimization layered on top of a postings list to accelerate conjunctive query processing (AND operations). Skip pointers allow the query evaluator to jump over large blocks of document IDs that cannot possibly satisfy the intersection, avoiding a linear scan. Common in systems like Apache Lucene for multi-term queries.
Positional Index
An augmented postings list that stores not just document IDs but the exact positions of each term occurrence within a document. This metadata is essential for:
- Phrase queries ("machine learning")
- Proximity searches (terms within N words) Storing positions increases index size by roughly 2-4x compared to a basic postings list.
Term Dictionary
The sorted vocabulary that acts as the lookup key for the postings list. It maps each unique term to a pointer into the postings file. Efficient implementations use Finite State Transducers (FSTs) or B-trees to support prefix queries, fuzzy matching, and fast term enumeration during wildcard expansion.
Impact-Ordered Postings
A variant of the postings list where documents are sorted by term frequency or weight rather than document ID. This enables early termination during disjunctive (OR) queries: the evaluator can stop processing low-impact documents once a score threshold is met, dramatically reducing latency for top-K retrieval.
Doc Values
A column-oriented data structure stored alongside the postings list in systems like Elasticsearch. While the postings list maps terms to documents, doc values map documents to field values, enabling efficient sorting, aggregations, and faceting on numeric, date, or keyword fields without loading the source document.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us