Hi,
here are a few of my observations. I hope some of them might help you to resolve your problem.
First of all, I don't think that your chosen properties values for max_buffered_delete_terms, max_buffered_docs, etc are very good. They are pretty much all set to their required minimum. I don't think that you will get very good performance with these settings. You might be better of with the default values.
Regarding hibernate.search.worker.batch_size=1, the reason it works is that with this value set to one you are pretty much bypassing the transactional framework. Each index modification will be applied immediately. As Sanne already pointed out, this is probably not a good idea and might be even dangerous. Index changes might get applied even though your db transaction might for example roll back due to an error. In this case you end up with a corrupted index. Everything indicated a problem with transactions.
Quote:
Updates were never making it into the index, but were showing up in memory, although you could not search by the new values themselves. New object were also not getting into the index and were never searchable.
How do you know that updated where showing up in memory, if the changes were never searchable. I am not quite sure what you are referring to here.
Quote:
So is this a bug or is there something else that we need to do to make this work without setting such a small batch size...or is that just expected behavior (in which case some documentation or entry in the FAQ would be nice)?
Definitely not an intended behavior.
Regarding your Spring setup. Which version of Spring are you using and how are you using it? Which type of transaction management do you use? Programmatic or declarative? Do you use any of the Spring Hibernate templates? If you are using declarative management (which I would recommend) maybe it helps if you compare your configuration with this article on the Hibernate Wiki -
Spring + Hibernate + Hibernate Search. The article references older versions of Search and Spring, but it should work with the latest version as well.
It would also help if you would post the code you are using to update and search your entities. This together with some log output might help to narrow down your problem.
Last but not least, I recommend to turn on Spring debug trace and trace the transaction log messages. Do they really behave as you expect? For example if you update an entity and then want to search on it, there must be at least one transaction commit in between.
--Hardy