Typically when implementing a search engine for a digital corpus, one wants to enable discovery not only of occurrences of exact word forms in the query but also of other inflections of the search terms. For example if you search Google for "digital classicism", your results will include Digital Classicist and even though "classicist" is not the exact word "classicism", you may be interested in the result. The same applies even more to highly flective languages such as Greek and Latin (this is, after all, how people are taught to use the dictionaries --- you have to know, or predict, the lemma of a word to be able to look up its meaning and other information on it).
The lemma dictionaries typically connect many occurrences of inflected word forms to their lemma form, and act as a mediator between a query (or the one who asks it) and a database, a corpus, or a text collection.
For Greek and Latin, the foremost freely available lemma dictionaries are included in the Morpheus source as XML files.
The Archimedes Project Morphology Service also provides an XML-RPC web interface --- a script which forwards queries to the Morpheus dictionaries. Such a script can be included in pages of other text collections, enabling lemmatizing searches via a "third-party" service.
A related problem is that of parsing a text to mark up its syntactic structure. This can aid in lemmatisation because often multiple lemma forms can be inflected to the same inflected form, meaning that looking up the inflected form in a lemma dictionary will yield multiple results for the lemma form. Disambiguating to the correct lemma form is a difficult problem, and parsing words in context to their correct part of speech can aid in this immensely. One approach is to use software such as TreeTagger trained to your language with a Treebank (such as the Perseus Treebanks).
Another approach often used for expanding search results is stemming, which typically tries to use an algorithmic approach to normalize inflected words and "chop off" the inflections to produce a "stem" word. An example for Latin is the Schinke Latin Stemmer. The search engine Egothor also has a trainable stemmer component.
Another difficulty in searching a corpus can be orthographic (spelling) variation in the text. For example, Latin has no standard orthography, which for diplomatic transcriptions (where the spelling has not been normalized by the editor, but remains as it is in the text) can mean that the same word may appear spelled differently throughout the corpus. XTF has a good introduction to how they have approached the problem of spelling correction in their search engine (mainly from the perspective of users "mistyping" their query, but the problem is the same).