# perldoc > Plucene::Index::Writer

---
type: CommandReference
command: Plucene::Index::Writer
mode: perldoc
section: ""
source: perldoc
---

## Quick Reference

- `Plucene::Index::Writer->new($path, $analyser, $create)` — create or open index
- `$writer->add_document($doc)` — add a document (triggers merge if > mergefactor segments)
- `$writer->optimize` — merge all segments for search performance; invalidates writer
- `$writer->add_indexes(@dirs)` — merge indexes from sub-collections (parallel indexing)
- `$writer->doc_count` — get document count
- `$writer->mergefactor` / `$writer->set_mergefactor($value)` — get/set merge factor (default 5)

## Name

**Plucene::Index::Writer** — write an index.

## Synopsis

perl
my $writer = Plucene::Index::Writer->new($path, $analyser, $create);

$writer->add_document($doc);
$writer->add_indexes(@dirs);

$writer->optimize; # called before close

my $doc_count = $writer->doc_count;

my $mergefactor = $writer->mergefactor;

$writer->set_mergefactor($value);
## Description

This is the writer class. If an index will not have more documents added for a while and optimal search performance is desired, then `optimize` should be called before the index is closed.

## Methods

- `new($path, $analyser, $create)` — create a new `Plucene::Index::Writer` object. The third argument determines whether a new index is created or an existing index is opened for adding documents.
- `mergefactor / set_mergefactor($value)` — get/set the merge factor (defaults to 5).
- `doc_count` — returns the number of documents in the index.
- `add_document($doc)` — adds a document to the index. After adding, a merge takes place if there are more than `$Plucene::Index::Writer::mergefactor` segments in the index (default 10, adjustable).
- `optimize` — merges all segments together into a single segment, optimizing the index for search. Should be called last; invalidates the writer object.
- `add_indexes(@dirs)` — merges all segments from an array of indexes into this index. Useful for parallel batch indexing. After completion, the index is optimized.