Back to Blog
Palantirenterprise searchOntologyElasticsearchfaceted searchdata platformpermissionssearch engine

Palantir Search & Discovery: Finding What You Need Among Millions of Objects

Deep dive into Palantir Foundry's Ontology-aware search system with permission-aware filtering, faceted search, and how AIP builds similar capabilities.

Coomia TeamPublished on May 11, 202510 min read
Share this articleTwitter / X

#TL;DR

  • Foundry's search is not traditional "keyword-matching against tables" -- it searches Ontology objects, understands object types, properties, relationships, and permissions, letting users search enterprise data like Google, but with structured business objects as results.
  • Permission-aware search is Foundry's core differentiator -- you can only ever find objects you have permission to see, search results are automatically filtered, and no data you shouldn't see is ever exposed, which is critical for government and financial customers.
  • Coomia DIP implements 6 search modes (BEST_MATCH/PREFIX/FUZZY/EXACT/WILDCARD/REGEX) + 3 faceted search types (TERMS/RANGE/DATE_RANGE) + Redis-based hot/recent search auto-suggestions, building an Ontology-aware search experience in the open-source ecosystem.

#1. Why Is Enterprise Search So Hard?

We use Google and Bing every day to search the internet with a smooth, natural experience. But when you search for data inside an enterprise, the experience is often a disaster.

Code
Consumer Search vs Enterprise Search
================================================

Google Search:
  Input: "weather in Beijing"
  Result: Instant weather card with temperature, humidity, forecast
  Experience: Excellent

Traditional Enterprise Search:
  Input: "customer John's orders"
  Result: ???

  Scenario 1 (No search):
    "Please contact IT to file a ticket. Processing time: 3-5 days."

  Scenario 2 (Basic search):
    Returns 47 results:
    - Customer records in CRM (3 entries)
    - Order data in ERP (12 entries)
    - Emails mentioning "John" (28 entries)
    - Some Excel files (4 files)

    Problem: Which of these refer to the same "John"?
    Problem: Do I have permission to see all this data?
    Problem: Which information is current?

  Foundry Search:
    Returns structured results:
    +-------------------------------------+
    | Customer: John Smith                |
    | ID: CUST-2024-78901                 |
    | Status: Active                      |
    | Related Orders: 12                  |
    | Latest Order: ORD-2024-56789 (open) |
    | Account Manager: Jane Doe           |
    | [View Details] [View Links] [Hist.] |
    +-------------------------------------+
    Experience: Very Good
Code
Three Core Challenges of Enterprise Search
================================================

Challenge 1: Data Fragmentation
+------+ +------+ +------+ +------+ +------+
| CRM  | | ERP  | | HRM  | |Email | |Files |
+--+---+ +--+---+ +--+---+ +--+---+ +--+---+
   |        |        |        |        |
   v        v        v        v        v
 The same "customer" is represented 5 different
 ways across 5 systems -- different IDs, different
 fields, different update timestamps.

Challenge 2: Complex Permissions
+------------------------------------------+
|  User A (Sales): Can see contact info     |
|  User B (Finance): Can see billing info   |
|  User C (Compliance): Can see risk scores |
|  User D (Intern): Can only see names      |
|                                           |
|  Same search query, 4 people see          |
|  different results                        |
+------------------------------------------+

Challenge 3: Semantic Understanding
+------------------------------------------+
|  Search "big customer":                   |
|  - Customers with large order amounts?    |
|  - Customers with large headcount?        |
|  - Customers under the "Key Accounts"     |
|    department?                            |
|  - Customers with tier = "Enterprise"?    |
|                                           |
|  Without Ontology = ambiguity             |
|  With Ontology = precise semantics        |
+------------------------------------------+

#2.1 Searching Objects, Not Tables

This is the fundamental difference between Foundry search and traditional database search:

Code
Traditional Search vs Ontology Search
================================================

Traditional Database Search:
  SELECT * FROM customers WHERE name LIKE '%John%'
  UNION
  SELECT * FROM orders WHERE customer_name LIKE '%John%'
  UNION
  SELECT * FROM tickets WHERE description LIKE '%John%'

  Problem: Cross-table search requires knowledge of table schemas
  Problem: Results are "rows", not "objects"
  Problem: Cannot understand relationships between objects

Foundry Ontology Search:
  Search("John", types=[Customer, Order, Ticket])

  The engine understands:
  - Customer is an object type with name, email, phone properties
  - Order has a "placed_by" link to Customer
  - Ticket has a "reported_by" link to Customer

  Returns:
  +-- Customer Object -----------------------+
  | John Smith (CUST-78901)                  |
  | +-- placed_by -> [12 orders]             |
  | +-- reported_by -> [3 tickets]           |
  | +-- managed_by -> Jane Doe (Employee)    |
  +-----------------------------------------+

#3. Six Search Modes

Code
Six Search Modes
================================================

Mode 1: BEST_MATCH (default)
  Query: "John Smith"
  Behavior: Analyzes query, matches against all indexed
    fields, scores by relevance (TF-IDF / BM25)
  Best for: General-purpose search

Mode 2: PREFIX
  Query: "Joh"
  Behavior: Matches objects where any indexed field
    starts with "Joh" -- John, Johnson, Johannes
  Best for: Autocomplete / type-ahead

Mode 3: FUZZY
  Query: "Jonh Smth"  (typos)
  Behavior: Allows edit distance up to 2,
    finds "John Smith" despite typos
  Best for: Tolerating user typos

Mode 4: EXACT
  Query: "CUST-2024-78901"
  Behavior: Matches the exact string, no analysis
  Best for: ID lookups, exact value matching

Mode 5: WILDCARD
  Query: "CUST-2024-*"
  Behavior: * matches zero or more characters,
    ? matches exactly one character
  Best for: Pattern-based filtering

Mode 6: REGEX
  Query: "CUST-202[34]-\\d{5}"
  Behavior: Full regular expression matching
  Best for: Complex pattern matching (power users)

#4.1 What Are Facets?

Facets are aggregated counts that let users progressively narrow search results. Think of shopping on Amazon -- the left sidebar shows brand, price range, rating, and each option shows how many products match.

Code
Faceted Search Example
================================================

Search: "order" (all orders)
Total: 45,678 results

Left panel (facets):          Right panel (results):

Order Status (TERMS)          +-- Order ORD-2024-56789 --+
  [x] pending    (12345)      | Status: pending          |
  [ ] processing (8901)       | Amount: $2,340           |
  [ ] shipped    (15432)      | Customer: John Smith     |
  [ ] delivered  (9000)       +-------------------------+

Order Amount (RANGE)          +-- Order ORD-2024-56790 --+
  [ ] < $100     (5678)       | Status: pending          |
  [x] $100-$1K   (23456)      | Amount: $890             |
  [ ] $1K-$50K   (12345)      | Customer: Jane Doe       |
  [ ] $50K-$1M   (3456)       +-------------------------+
  [ ] > $1M      (532)

Created Date (DATE_RANGE)
  [ ] Last 7 days  (1234)
  [x] Last 30 days (5678)
  [ ] Last 90 days (12345)

#5.1 You Can Only Find What You Can See

This is Foundry's most important search security feature:

Code
Permission-Aware Search
================================================

Objects actually in the database:
  Customer: [John, Jane, Bob, Alice, Eve]
  Order: [ORD-001, ORD-002, ORD-003, ..., ORD-100]

User A (East Region Sales Manager):
  Permission: East region customers + own orders
  Search "customer" -> Results: [John, Jane]  (2/5)

User B (National Sales Director):
  Permission: All regions + all orders
  Search "customer" -> Results: [John, Jane, Bob, Alice, Eve]

User C (Compliance Auditor):
  Permission: All customers (compliance fields only) + high-risk orders
  Search "customer" -> Results: [John, Jane, Bob, Alice, Eve]
    But each customer shows only: name, risk_level, compliance_status
    Hidden fields: contact_info, transaction_history

Key Points:
  - Result COUNT differs (row-level permissions)
  - Result FIELDS differ (column-level permissions)
  - Facet counts adjust accordingly
  - Zero-knowledge: no leakage of unauthorized data

This deep permission integration works well within Palantir's closed platform, but enterprises must accept complete platform lock-in. Coomia DIP achieves the same Ontology-integrated, permission-aware search entirely on open-source technologies, giving enterprises full control.

#6. Search Suggestions and Autocomplete

Code
Search Suggestion Types
================================================

User types: "cust"
                        +------------------------------+
                        | Suggestions:                  |
                        |                               |
                        | [Type] Customer               |
                        |   "Search all Customer objects"|
                        |                               |
                        | [Recent] "customer churn"     |
                        |   "Your search from 2h ago"   |
                        |                               |
                        | [Hot] "customer satisfaction" |
                        |   "Trending (142 searches)"   |
                        |                               |
                        | [Object] CUST-2024-12345     |
                        |   "Customer: John Smith"      |
                        |                               |
                        | [Saved] "My VIP Customers"   |
                        |   "Saved search (shared)"     |
                        +------------------------------+

Five suggestion types:
  1. OBJECT_TYPE  - Suggests matching object types
  2. OBJECT       - Suggests specific matching objects
  3. RECENT       - User's recent searches (personalized)
  4. HOT          - Globally trending searches
  5. SAVED        - User's saved searches

#7. Comparison with Search Solutions

Code
Feature Comparison
================================================

+---------------------+----------+----------+----------+
| Feature             | Foundry  | Elastic  | Algolia  |
+---------------------+----------+----------+----------+
| Full-text search    | Yes      | Yes      | Yes      |
+---------------------+----------+----------+----------+
| Fuzzy matching      | Yes      | Yes      | Yes      |
+---------------------+----------+----------+----------+
| Faceted search      | Yes      | Yes      | Yes      |
+---------------------+----------+----------+----------+
| Ontology-aware      | YES      | No       | No       |
+---------------------+----------+----------+----------+
| Object-level results| YES      | No (docs)| No (docs)|
+---------------------+----------+----------+----------+
| Permission-aware    | YES      | Manual   | Manual   |
+---------------------+----------+----------+----------+
| Row-level security  | Built-in | Plugin   | No       |
+---------------------+----------+----------+----------+
| Column-level secur. | Built-in | No       | No       |
+---------------------+----------+----------+----------+
| Relationship nav.   | YES      | No       | No       |
+---------------------+----------+----------+----------+
| Self-hosted         | Yes      | Yes      | No(SaaS) |
+---------------------+----------+----------+----------+

#8. AIP SearchService Implementation

Code
AIP SearchService
================================================

+------------------------------------------------+
|  SearchService (gRPC)                          |
|                                                |
|  Core Search RPCs:                             |
|  +------------------------------------------+ |
|  |  1. Search(SearchRequest)                 | |
|  |     -> Supports 6 search modes            | |
|  |     -> Supports faceted search            | |
|  |     -> Supports pagination and sorting    | |
|  |                                           | |
|  |  2. Suggest(SuggestRequest)               | |
|  |     -> Autocomplete suggestions           | |
|  |     -> Hot searches                       | |
|  |     -> Recent searches                    | |
|  |                                           | |
|  |  3. FacetSearch(FacetRequest)             | |
|  |     -> TERMS facets                       | |
|  |     -> RANGE facets                       | |
|  |     -> DATE_RANGE facets                  | |
|  +------------------------------------------+ |
|                                                |
|  Underlying Engines:                           |
|  +------------+  +----------+  +------------+  |
|  |Elasticsearch|  |  Redis   |  | Ontology   |  |
|  |(full-text   |  |(suggest  |  |(type-aware |  |
|  | index)      |  | cache)   |  | context)   |  |
|  +------------+  +----------+  +------------+  |
+------------------------------------------------+

#9. Search Performance Optimization

Code
Expected Performance (AIP targets)
================================================

+--------------------+----------+----------+----------+
| Operation          | p50      | p95      | p99      |
+--------------------+----------+----------+----------+
| Simple search      | 15ms     | 50ms     | 120ms    |
+--------------------+----------+----------+----------+
| Faceted search     | 30ms     | 80ms     | 200ms    |
+--------------------+----------+----------+----------+
| Autocomplete       | 5ms      | 15ms     | 40ms     |
+--------------------+----------+----------+----------+
| Regex search       | 100ms    | 500ms    | 2000ms   |
+--------------------+----------+----------+----------+
| Cross-type search  | 50ms     | 150ms    | 400ms    |
+--------------------+----------+----------+----------+

#Key Takeaways

  1. Foundry revolutionizes enterprise search by transforming "searching tables" into "searching objects" -- through Ontology awareness, the search engine understands business object types, properties, and relationships, returning structured business objects with full context instead of raw database rows, with permission filtering ensuring data security.

  2. Permission-aware search is not "post-filter" but "built-in security" -- permission constraints are injected at query construction time, ensuring users can only ever discover data they are authorized to access, which is critical for government and financial industry compliance requirements.

  3. AIP builds a complete Ontology-aware search experience with 6 search modes + 3 facet types + Redis-based hot/recent search suggestions -- Elasticsearch provides search performance at the foundation, the Ontology type system provides semantic understanding at the top, and Redis delivers real-time personalized search suggestions.

#Want Palantir-Level Capabilities? Try AIP

Palantir's technology vision is impressive, but its steep pricing and closed ecosystem put it out of reach for most organizations. Coomia DIP is built on the same Ontology-driven philosophy, delivering an open-source, transparent, and privately deployable data intelligence platform.

  • AI Pipeline Builder: Describe in natural language, get production-grade data pipelines automatically
  • Business Ontology: Model your business world like Palantir does, but fully open
  • Decision Intelligence: Built-in rules engine and what-if analysis for data-driven decisions
  • Open Architecture: Built on Flink, Doris, Kafka, and other open-source technologies — zero lock-in

👉 Start Your Free Coomia DIP Trial | View Documentation

Related Articles