I need to send a class containing Lucene elements such as Query
over the network using EJB and of course this class need to be serialized. I marked my class as Serializable
but it does not seems to be enough:
org.apache.lucene.search.TermQuery is not Serializable
Indeed, when i read the javadoc of the last stable release of Lucene (4.0), i can see that TermQuery
does not implement Serializable, Query
neither. What i don't understand is why those classes used to implement Serializable
in the last release (3.6.1), and why it's no longer the case?
Mike McCandless, one of Lucene contributors as well as Lucene 4 changelog say:
The actual commits were done against JIRA issues LUCENE-2908 and LUCENE-4037. The description of the former issue says:
Lucene is not alone thinking about throwing away serialization. For example, guava considered this, too.
Speaking about your problem - you should be able to always convert your query to a String representation (using
.toString()
) and back. Unless you do this million times a second, the overhead should be negligible.