[ 
https://issues.apache.org/jira/browse/SOLR-303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Yonik Seeley updated SOLR-303:
------------------------------

    Attachment: distributed.patch

OK, here is a *draft* that mostly works for searches and highlighting.

There are stages in the request:
{code}
  public static int STAGE_START           = 0;
  public static int STAGE_PARSE_QUERY     = 1000;
  public static int STAGE_EXECUTE_QUERY   = 2000;
  public static int STAGE_GET_FIELDS      = 3000;
  public static int STAGE_DONE            = Integer.MAX_VALUE;
{code}

When a component wants to send a request, it adds it to "outgoing" queue.
Other components can inspect and modify these shard requests.
All components get a callback when the shard response is received.

All shard responses purposes (to aid in both correlation and 
inspection/modification by other components).
This is what a ShardRequest looks like:
{code}
public class ShardRequest {
  public final static String[] ALL_SHARDS = null;

  public final static int PURPOSE_PRIVATE         = 0x01;
  public final static int PURPOSE_GET_TERM_DFS    = 0x02;
  public final static int PURPOSE_GET_TOP_IDS     = 0x04;
  public final static int PURPOSE_REFINE_TOP_IDS  = 0x08;
  public final static int PURPOSE_GET_FACETS      = 0x10;
  public final static int PURPOSE_REFINE_FACETS   = 0x20;
  public final static int PURPOSE_GET_FIELDS      = 0x40;
  public final static int PURPOSE_GET_HIGHLIGHTS  = 0x80;

  public int purpose;  // the purpose of this request

  public String[] shards;  // the shards this request should be sent to
// TODO: how to request a specific shard address?

  public ModifiableSolrParams params;

  public List<ShardResponse> responses = new ArrayList<ShardResponse>();
}
{code}


Components are responsible for themselves... the highlighting component is 
responsible for turning itself on/off at the appropriate time... the query 
component has no knowledge of the highlight component.  This will make it so 
that custom components can be developed that can work in a distributed 
environment w/o explicit support for that component baked into the other 
components.



> Distributed Search over HTTP
> ----------------------------
>
>                 Key: SOLR-303
>                 URL: https://issues.apache.org/jira/browse/SOLR-303
>             Project: Solr
>          Issue Type: New Feature
>          Components: search
>            Reporter: Sharad Agarwal
>            Assignee: Yonik Seeley
>         Attachments: distributed.patch, fedsearch.patch, fedsearch.patch, 
> fedsearch.patch, fedsearch.patch, fedsearch.patch, fedsearch.patch, 
> fedsearch.patch, fedsearch.stu.patch, fedsearch.stu.patch
>
>
> Searching over multiple shards and aggregating results.
> Motivated by http://wiki.apache.org/solr/DistributedSearch

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to