Eu criei minha própria implementação do JdbcDirectory, embora dependesse do JEE6 para aproveitar o
@Singleton
anotação. O código em si não é muito trivial para colar em uma postagem do StackOverflow e ainda tem algumas limitações. Parte fundamental é que você não pode fazer várias operações em uma única transação usando vários encadeamentos devido à semântica de bloqueio do banco de dados. https://github.com/trajano/doxdb/tree/jdbc-directory-example/doxdb-ejb/src/main/java/net/trajano/doxdb/search/lucene
Olhando para sua implementação, parece que você também está mantendo os "arquivos" excluídos, provavelmente porque teria menos fragmentação no armazenamento do banco de dados, enquanto o meu eu removi o próprio registro.
Eu marquei uma versão com a qual estou trabalhando que parece estável o suficiente para minhas cargas de teste. Sinta-se à vontade para fazer comentários ou sugestões sobre ele.