---
name: "LucyX::Remote::SearchServer"
section: "3pm"
platform: "linux"
package: "liblucy-perl"
version: "0.3.3-7+b1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/LucyX::Remote::SearchServer"
---

# LucyX::Remote::SearchServer(3pm)

Make a Searcher remotely accessible.

## NAME

LucyX::Remote::SearchServer - Make a Searcher remotely accessible.

## SYNOPSIS

```
    my $searcher = Lucy::Search::IndexSearcher->new(
        index => '/path/to/index'
    );
    my $search_server = LucyX::Remote::SearchServer->new(
        searcher => $searcher
    );
    $search_server->serve(
        port => 7890
    );
```

## DESCRIPTION

The SearchServer class, in conjunction with either SearchClient or ClusterSearcher, makes it possible to run a search on one machine and report results on another.

By aggregating several SearchClients under a ClusterSearcher, the cost of searching what might have been a prohibitively large monolithic index can be distributed across multiple nodes, each with its own, smaller index.

## METHODS

### new

```
    my $search_server = LucyX::Remote::SearchServer->new(
        searcher => $searcher, # required
    );
```

Constructor.  Takes hash-style parameters.

- •

  **searcher** - the Searcher that the SearchServer will wrap.

### serve

```
    $search_server->serve(
        port => 7890,      # required
    );
```

Open a listening socket on localhost and wait for SearchClients to connect.

- •

  **port** - the port on localhost that the server should open and listen on.

### serve\_rpc

```
    my $status = $search_server->serve_rpc($sock);
```

Handle a single RPC from socket `$sock`. Returns 'done' if the connection should be closed. Returns 'terminate' if the server should shut down. Returns 'continue' if the server should continue to handle requests from this client.
