Karl Wettin created LUCENE-5000:
-----------------------------------
Summary: Query serialization using ObjectInput/OutputStream
Key: LUCENE-5000
URL: https://issues.apache.org/jira/browse/LUCENE-5000
Project: Lucene - Core
Issue Type: New Feature
Components: core/search
Affects Versions: 4.3
Reporter: Karl Wettin
Priority: Trivial
Reads and writes queries on ObjectInput/OutputStream.
No support for ConstantScoreQuery (no serialization for Filter) nor
PayloadNearQuery and PayloadTermQuery (no serialization for PayloadFunction).
I might have missed to implement support for some core Queries. Currently
supported are: TermQuery, BooleanQuery, WildcardQuery, PhraseQuery,
MultiPhraseQuery, FuzzyQuery, RegexpQuery, TermRangeQuery, NumericRangeQuery,
DisjunctionMaxQuery, MatchAllDocsQuery, SpanTermQuery,
SpanMultiTermQueryWrapper, SpanNearQuery, SpanNotQuery, SpanOrQuery,
FieldMaskingSpanQuery, SpanFirstQuery, SpanPositionRangeQuery,
SpanPayloadCheckQuery and SpanNearPayloadCheckQuery.
Users are allowed to implement and register strategies for their own queries.
This will not allow you to serialize any object graph with aggregated Query
instances e.g. Map<String, Query>, that would require a new implementation of
ObjectOutputStream (one could base that on the GPL2 code from OpenJDK) or
instrument the existing implementations to handle Query in private writeObjectA
and similar methods.
There's a bit of reflection glue in this code in order to read private fields
in query implementation. Not too happy about that, but not much to do unless
one is to expose a bunch of new getters in all those classes.
The class is places in o.a.l.search in order to access package visible fields
without getters. If moving to another package this would have to be handled
using reflection as with above mentioned private fields.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]