Looking toward the future, and distributed search, this might be a
natural place to add hooks to implement that distributed logic. This
would allow other people to efficiently support their custom
functionality in a distributed environment.
Thoughts?
I like it. As is the prospect of adding field collapsing to standard,
dismax, *and* MLT is ugly -- it shouldn't not be.
Is this the basic architecture you are suggesting? A single handler
that chooses what components are used in the request pipeline.
Something like:
// maybe debug
debug = Debug?
// choose one query method
docs = Query( req, debug )
- standard
- dismax
- mlt (as input)
- ...
// zero or more...
info[] = Info( req, docs, debug )
+ facet
+ mlt (on each result)
+ ...
// zero or more (passed as a chain)
docs = Transform( req, docs, debug )
+ collapse
+ ???
// zero or more
fmt[] Format( req, docs )
+ highlight
// Build the response
rsp.add( docs );
rsp.add( info );
rsp.add( fmt );
rsp.add( debug );
I'm not sure how well this would work for distributed queries...
doesn't formatting need to happen in the same place as the query?
Are there other general categories I'm missing?