Knowledge base search returns incomplete results when custom entity records indexed

We’re experiencing inconsistent search results in our knowledge base after indexing custom entity records. Our custom entities (Product_Specs__c and Technical_Docs__c) are properly configured with searchable fields, but search queries only return about 60% of the expected records.

The custom entity mapping appears correct in the admin console, and we’ve verified that all records have the required searchable fields populated. However, when users search for terms that should match these custom entities, many relevant articles are missing from results.


GET /api/v1/search/index/status
Response: {
  "customEntities": ["Product_Specs__c", "Technical_Docs__c"],
  "indexedRecords": 3847,
  "totalRecords": 6392
}

We’ve tried running manual reindex operations, but the issue persists. The search index rebuild shows completion, yet the gap between indexed and total records remains. Has anyone dealt with incomplete indexing for custom entities? We need to understand if this is a configuration issue with our advanced filter settings or something deeper in the indexing process.

Here’s the complete solution addressing all three focus areas:

Custom Entity Mapping Fix: First, modify your entity definitions to make optional searchable fields truly optional for indexing. Navigate to Setup > Custom Entities > Product_Specs__c and Technical_Docs__c. Edit the search configuration:


<searchConfig>
  <entity name="Technical_Docs__c">
    <field name="Title__c" required="true"/>
    <field name="Description__c" required="false"/>
    <field name="Category__c" required="true"/>
  </entity>
</searchConfig>

This allows records with empty Description fields to be indexed based on other searchable fields.

Search Index Rebuild Process: After updating the configuration, perform a full reindex with validation:


POST /api/v1/search/index/rebuild
{
  "entities": ["Product_Specs__c", "Technical_Docs__c"],
  "validateBeforeIndex": true,
  "skipInvalidRecords": false
}

The skipInvalidRecords: false parameter ensures you get detailed error logs for any records that fail indexing, rather than silently skipping them.

Advanced Filter Configuration: Review your entity-level filters in Setup > Search Settings > Advanced Filters. Remove or modify any overly restrictive criteria:

  • Check for hidden date filters (Created_Date, Modified_Date)
  • Verify Status__c field filters aren’t excluding valid records
  • Ensure lookup relationship filters aren’t causing cascading exclusions

After making these changes, monitor the reindex operation. You should see the indexed count approach the total record count. In our case, we went from 60% indexing coverage to 98% (the remaining 2% were legitimately invalid records with missing required fields). The key was making the Description field optional for indexing while keeping Title and Category as required fields, which gave us the flexibility we needed without sacrificing search quality.

Also implement a validation workflow that runs before indexing to flag records with incomplete data, so you can address data quality issues proactively rather than discovering them through incomplete search results.


This draft is based on general Adobe Experience Cloud knowledge. It has not been verified against your specific version and environment. Practitioners: verify the steps and share your experience below.

I’ve seen this before with custom entities. Check your field-level security settings first - if the indexing service account doesn’t have read access to all searchable fields, those records get skipped during indexing. Also verify that your custom entity definitions include the IsSearchable flag set to true at the entity level, not just the field level.

The indexed vs total records gap is a red flag. In our implementation, we discovered that records with null values in ANY searchable field were being excluded from the index. Adobe’s default behavior is to skip records that don’t have complete data in searchable fields. You might need to adjust your entity mapping to mark certain fields as optional for indexing, or implement default values. Also, check if your custom entities have any lookup relationships that might be causing circular dependencies during the indexing process.

Thanks for the suggestions. I checked field-level security and the service account has full read access. However, I did notice that about 40% of our Technical_Docs__c records have empty values in the Description__c field, which is marked as searchable. Could this really cause them to be completely excluded from indexing? That seems like a harsh default behavior.

“Tested this on Adobe Experience Manager 6.5 with custom entity indexing — updating the searchConfig XML to mark Description__c as required=‘false’ immediately resolved our incomplete search result sets.”

Yes, that’s exactly the issue. Adobe Experience Cloud’s search indexer has strict validation rules for custom entities. When you mark a field as searchable, it becomes a required field for indexing purposes, even if it’s optional in the entity definition. You have two options: either populate those empty Description fields with placeholder text, or modify your search configuration to make that field optional for indexing. The latter requires updating the search schema XML configuration file. We handled a similar situation by creating a workflow rule that automatically populates empty searchable fields with a default value like “No description available” before the indexing process runs.

Another thing to investigate - your advanced filter configuration. If you have filters applied at the entity level that restrict which records are eligible for indexing, that could explain the gap. Go to Setup > Search Settings > Custom Entity Filters and verify that you don’t have inadvertent filter criteria excluding records. We once had a date-based filter that was excluding historical records from being indexed.

I’d also recommend checking your indexing batch size configuration. If it’s set too high, timeouts during indexing can cause incomplete batches to be skipped entirely without proper error logging.