Zend_Lucene pencarian kompeten bekerja dengan cukup baik. Saya tidak yakin bagaimana itu akan mengatasi persyaratan kedua Anda, namun jika Anda menyesuaikan tokenized, Anda seharusnya dapat melakukannya dengan memperlakukan perubahan dari huruf ke angka sebagai kata baru.
Yang saya benar-benar tidak yakin adalah persyaratan teratas. Mengingat cara pengindeksannya, urutan menjadi tidak sopan dalam pencarian, jadi Anda mungkin tidak dapat melakukannya tanpa pengeditan Lucene yang berat, menulis filter (menggunakan lucene untuk menarik korek api, lalu memeriksa urutannya), atau menulis solusi Anda sendiri . Semua ini akan memperlambat pencarian, dan menambah beban ke server Anda.
Ada juga solr , tapi saya belum pernah menggunakannya dan tidak tahu apa-apa tentangnya. Sphinx adalah yang lain, tetapi saya melihat Anda telah mengesampingkannya.