De Zend_Lucene zoeken competent werkt redelijk goed. Ik weet niet zeker hoe het aan je tweede eis zou voldoen, maar als je de tokenized hebt aangepast, zou je dit moeten kunnen doen door een verandering van letters naar cijfers als een nieuw woord te behandelen.
Degene waar ik echt niet zeker van ben, is de hoogste vereiste. Gezien de manier waarop het is geïndexeerd, wordt de volgorde oneerbiedig bij het zoeken, dus je kunt het misschien niet doen zonder veel Lucene te bewerken, een filter te schrijven (lucene gebruiken om de overeenkomsten te trekken en vervolgens de volgorde te controleren) of je eigen oplossing te schrijven . Al deze zullen het zoeken vertragen en uw server belasten.
Er is ook solr , maar ik heb het nooit gebruikt en weet er niets van. Sphinx was een andere, maar ik zie dat je dat al hebt uitgesloten.