Understanding Function Index
It is the name of the table that the index is created on.

This:

CREATE INDEX area_index ON rivers (area(geo));


.. creates a functional index on the rivers table, that uses the function area() on the column geo.

In simple terms, Oracle creates an index that pre-calculates the value of area(geo), thus making any lookups faster.

The query you have posted:

SELECT id, geo, area(geo), desc
FROM rivers     
WHERE Area(geo) &gt;5000;


... can use the area_index functional index to select the pre-calculated value(s) of area(geo) without having to call the area() function for each row in the table.

Essentially, the query can look like this in pseudo-code:

SELECT id, geo, area_index_value, desc
FROM rivers     
WHERE area_index_value &gt;5000;


The Oracle documentation explains this well.