Optimize complex faceted search

Faceted Search is designed around an index so public filtering does not need to rebuild every value from raw WordPress content on each interaction. Configuration still determines how much data each refresh must process and render.

Reduce the candidate set first

Put permanent restrictions in the archive or saved custom query. Do not begin with every public object when the interface only represents one content family.

Use a separate context when two collections have materially different facets or result cards.

Faceted Search REST responses use private, no-store cache headers. Do not override them with shared CDN or proxy caching: language, permission rules and regional pricing can change the visible results. Public card, count and suggestion queries re-evaluate the current visitor's allowed content rather than relying on a previously indexed permission decision.

Index only required card content

In Indexed native fields, disable featured image, excerpt, or post content payloads that the result template never uses. Under Indexed metas, declare only custom fields rendered by that template.

Do not index long editor or textarea content as a facet source. Prefer a normalized taxonomy or a short derived value.

Control choice and result volume

  • Use Limit and Soft limit for long choice lists.
  • Prefer Autocomplete or Searchable select when showing every option would be noisy.
  • Keep Per Page options bounded.
  • Use Maximum markers and marker scope deliberately on maps.
  • Enable clustering when a map displays many nearby markers.
  • Use Current page marker scope when the map only needs to represent visible cards.

Reindex at the right time

Reindex after structural configuration changes and after large imports. Avoid repeatedly changing one facet and launching overlapping full reindexes; finish the configuration pass, save it, then rebuild the affected context.

The context table shows Last indexed and indexing progress. Treat a completed operation as the prerequisite for performance and result testing.

Category edits made through POM AI MCP update the category immediately and refresh related indexed results in small background batches. Allow WordPress scheduled tasks to run before checking the final search results; large categories can require several batches. Repeating an unchanged category value does not request another refresh.

Measure the visitor journey

Test the initial page and several filtered states with realistic content volume. Include a combination with many matches, a selective combination, sort, later pages, and mobile map use.

If only one card design is slow, simplify that result template before removing useful facets. If every refresh is slow, reduce the base query, indexed payload, page size, and number of simultaneously rendered choices.