In this recipe, you wrote two PostgreSQL functions to perform geocoding and reverse geocoding. For both the functions, you defined a set of input and output parameters, and after some PL/PostgreSQL processing, you returned a set of records to the function client, given by executing a query.
As the input parameters, the Get_Closest_PlaceNames function accepts a PostGIS geometry and an optional num_results parameter that is set to a default of 5 in case the function caller does not provide it. The output of this function is SETOF RECORD, which is returned after running a query in the function body (defined by the $$ notation). Here, the query finds the places closest to the centroid of the input geometry. This is done using an indexed nearest neighbor search (KNN index), a new feature available in PostGIS 2.
The Find_PlaceNames function accepts as the input parameters a search string to look for and an optional num_results parameter, which in this case is also set to a default of 5 if not provided by the function caller. The output is a SETOF RECORD, which is returned after running a query that uses the to_tsquery PostgreSQL text search function. The results of the query are the places from the database that contain the search_string value in the name field.