Heratio Framework API Reference

SearchService
in package

Standalone Elasticsearch search service for Heratio.

Queries ES directly via curl HTTP. No Symfony or PHP client dependency. Falls back to database LIKE queries if ES is unavailable.

Usage: $results = SearchService::search('pottery', ['type' => 'archive']); $results = SearchService::autocomplete('pot', 'informationobject'); $results = SearchService::browse([ 'type' => 'archive', 'facets' => ['level', 'creator', 'subject'], 'filters' => ['level' => 'File'], 'sort' => 'relevance', 'page' => 1, 'limit' => 30, ]);

Table of Contents

Methods

autocomplete()  : array<string|int, mixed>
Autocomplete search (fast, edge-ngram).
browse()  : array<string|int, mixed>
Browse with faceted navigation (for GLAM display).
configure()  : void
Override configuration programmatically (for testing or standalone use).
getConnectionInfo()  : array<string|int, mixed>
Get configured ES host info (for diagnostics).
isAvailable()  : bool
Check if ES is available.
reset()  : void
Reset cached config (for testing).
search()  : array<string|int, mixed>
Full-text search with facets and filters.
searchFallback()  : array<string|int, mixed>
Fallback search using database LIKE queries when ES is unavailable.

Methods

autocomplete()

Autocomplete search (fast, edge-ngram).

public static autocomplete(string $prefix[, string $entityType = 'informationobject' ][, string $culture = 'en' ][, int $limit = 10 ]) : array<string|int, mixed>

Returns: [['id'=>1, 'slug'=>'x', 'title'=>'y'], ...]

Parameters
$prefix : string
$entityType : string = 'informationobject'
$culture : string = 'en'
$limit : int = 10
Return values
array<string|int, mixed>

browse()

Browse with faceted navigation (for GLAM display).

public static browse([array<string|int, mixed> $options = [] ]) : array<string|int, mixed>

Returns same structure as search() but may use match_all for empty query.

Parameters
$options : array<string|int, mixed> = []
Return values
array<string|int, mixed>

configure()

Override configuration programmatically (for testing or standalone use).

public static configure(string $host, int $port, string $indexPrefix) : void
Parameters
$host : string
$port : int
$indexPrefix : string

getConnectionInfo()

Get configured ES host info (for diagnostics).

public static getConnectionInfo() : array<string|int, mixed>
Return values
array<string|int, mixed>

isAvailable()

Check if ES is available.

public static isAvailable() : bool
Return values
bool

reset()

Reset cached config (for testing).

public static reset() : void

Full-text search with facets and filters.

public static search(string $query[, array<string|int, mixed> $options = [] ]) : array<string|int, mixed>

Options: 'entityType' => 'informationobject' (default) 'culture' => 'en' 'filters' => ['level' => 123, 'creator' => 'John', ...] 'facets' => ['level', 'creator', 'subject', 'place', 'media_type', 'repository'] 'sort' => 'relevance'|'title_asc'|'title_desc'|'date_asc'|'date_desc'|'updated'|'identifier' 'page' => 1 'limit' => 30 'publicationStatus' => 'published' (default) | 'draft' | 'all' '_match_all' => true (internal, set by browse())

Returns: [ 'hits' => [['id'=>1, 'slug'=>'x', 'title'=>'y', '_score'=>1.5], ...], 'total' => 150, 'facets' => ['level' => ['File'=>30, 'Item'=>20], ...], 'page' => 1, 'limit' => 30, ]

Parameters
$query : string
$options : array<string|int, mixed> = []
Return values
array<string|int, mixed>

searchFallback()

Fallback search using database LIKE queries when ES is unavailable.

public static searchFallback(string $query[, string $entityType = 'informationobject' ][, string $culture = 'en' ][, int $page = 1 ][, int $limit = 30 ]) : array<string|int, mixed>
Parameters
$query : string
$entityType : string = 'informationobject'
$culture : string = 'en'
$page : int = 1
$limit : int = 30
Return values
array<string|int, mixed>

        
On this page

Search results