I will try to sum it up in a few sentences from what I understand so far...
Facets are a well-known feature of search engines that can return
voluminous result sets, in order to let users decide how to proceed with
their query. One decision may be to refine the query to filter out only
parts of the result set. By assisting the user to refine the search
without knowing the subtleties of a query language, facets are a most
comfortable way for a search product to offer UI actions to filter
result sets. Facets need to display additional information, most of
statistical nature, to give the required information to the user so an
educated guess can be made.
In Elasticsearch, the facets are implemented as part of the search
module in package org.elastisearch.search and cover a broad range of
different approaches how result sets can be statstically analyzed
(counting, histogram, geo, ...). They operate on field cache data in
order to be fast. The process is an evaluation by a scatter/gather
algorithm (or map/reduce-style) that works in several stages: first send
out facet criteria, then aggregate the data in the result set, and
finally collect them into a small handy reduced data structure that can
be represented as part of the search response. This process works on
several layers, on shard layer, and on node layer, on one or more indices.
The facet implementation of Elasticsearch is now refactored to allow
better customization in the implementations. Right now, only "static"
facet execution is possible, and unfortunately, some of the facet code
is tied to other code in Elasticsearch. Igor Motov wrote a facet with
powerful scripting capabilities
GitHub - imotov/elasticsearch-facet-script: Fully Scriptable Facets for ElasticSearch to demonstrate how
facet execution phases could be customized. With the new framework,
plugin authors will be enabled to program new algorithms to create
facets, also on custom data types, by implementing custom "executors"
that can operate on the data in the map/reduce phases, just like they
want...
So, in the future, you will see a standard set of facet implementations
in the Elasticsearch core, and in plugins, you will see how
Elasticsearch extensions can also introduce new kinds of facets, with a
minimum of boilerplate code.
Jörg
Am 06.03.13 12:37, schrieb Mo:
I was just wondering if there is a resource that has a walk through or
a more detailed description of what are the best practices or why are
things that are currently implemented done the way they are?
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.