If a word is highlighted in the Solr results, then search for all occurrences of that word in the ALTO document and return that list of coordinates. This is an easy approach, but has the potential to match too much if the query doesn't match all occurrences of a given word.
Attempt to match highlighted words to those in the original ALTO document based on their position in the document. This would require careful synchronization of the full-text field and the ALTO file to ensure that the word positions matched.
Attempt to match the highlighted word by using exact match, but then verify that at least the preceding and following words match.
Include the ALTO coordinates for each word in the text to be indexed by Solr. The challenge is to include the coordinates in such a way that will not interfere with Solr's processing of the field.
Preprocess the ALTO XML file into sets of annotation lists for words, lines, blocks, and pages. Use an off-the-shelf implementation of the IIIF Content Search API (or implement our own) to search this set of predefined annotations.
extracted_text
field in Solr, in the form word{x,y,w,h}
{...}
before analysis.extracted_text
field