Search subjects
POST /api/search
Content-Type: application/json
{
"query" : "ηλεκτρικά πατίνια",
"cityIds" : [ "athens" , "chania"],
"page" : 1,
"pageSize" : 10,
"detailed" : false
}
Search for subjects using a hybrid search approach that combines traditional text search with semantic search. Supports filtering by city, person, party, topic, date range, and geographic location.
Request body
Array of city IDs to filter by
Array of person IDs to filter by
Array of party IDs to filter by
Array of topic IDs to filter by
Date range for filtering results Start date in ISO 8601 format (e.g., “2024-01-01T00:00:00Z”)
End date in ISO 8601 format (e.g., “2024-12-31T23:59:59Z”)
Geographic location filter Search radius in kilometers
Results per page (minimum: 1, maximum: 100)
Whether to return detailed results with speaker segment text. When true, includes full speakerSegments array in results.
Response
Array of search results Show SearchResultLight properties
Meeting information including city data
Associated topic with id, name, name_en, and colorHex
Person who introduced the subject
Geographic location data Location type: point, lineString, or polygon
Coordinate data (x: longitude, y: latitude)
Array of speaker segment IDs that matched the search query
Array of highlighted text matches
Full speaker segment data (only when detailed: true)
Pagination metadata Number of results per page
Error responses
Invalid request parameters {
"error" : {
"code" : "INVALID_REQUEST" ,
"message" : "Invalid request parameters" ,
"details" : [
{
"code" : "invalid_type" ,
"message" : "Expected string, received number" ,
"path" : [ "query" ]
}
]
}
}
Internal server error {
"error" : {
"code" : "SEARCH_ERROR" ,
"message" : "An error occurred while performing the search" ,
"details" : "Connection timeout"
}
}
Search configuration
The search API uses the following configuration:
Semantic search : Enabled by default, combining text and vector similarity
Rank window size : 100 results are considered for ranking
Rank constant : 60 (controls the balance between text and semantic scores)
Maximum page size : 100 results per page
Use cases
Basic text search
{
"query" : "πάρκα" ,
"page" : 1 ,
"pageSize" : 20
}
Filter by city and date range
{
"query" : "οικονομικά" ,
"cityIds" : [ "athens" ],
"dateRange" : {
"start" : "2024-01-01T00:00:00Z" ,
"end" : "2024-12-31T23:59:59Z"
}
}
Geographic search
{
"query" : "ανακαίνιση" ,
"location" : {
"point" : {
"lat" : 37.9838 ,
"lon" : 23.7275
},
"radius" : 10
}
}
Detailed results with speaker segments
{
"query" : "κυκλοφορία" ,
"cityIds" : [ "athens" ],
"detailed" : true ,
"pageSize" : 5
}