El Zend_Lucene búsqueda competente funciona bastante bien. No estoy seguro de cómo cumpliría con su segundo requisito, sin embargo, si personalizó el tokenizado, debería poder hacerlo tratando un cambio de letras a números como una nueva palabra.
El que realmente no estoy seguro es el requisito principal. Dada la forma en que está indexado, el orden se vuelve irreverente en la búsqueda, por lo que es posible que no pueda hacerlo sin una edición intensa de Lucene, escribiendo un filtro (usando lucene para obtener las coincidencias y luego verificando el orden) o escribiendo su propia solución . Todo esto ralentizará la búsqueda y agregará carga a su servidor.
También hay solr , pero nunca lo he usado y no sé nada al respecto. Esfinge era otro, pero veo que ya lo has descartado.