<p><ahref="attributes.html">Attributes</a> and <ahref="queries.html">Queries</a> are key features of Haiku. While attributes are useful on their own, to display additional information on a file, for a query on them, they need to be indexed. It puts them into a lookup table, which in turn makes queries lightning fast.<br/>
The index is part of the filesystem and is kept for every volume/partition separately.</p>
<h2>
Indexing commands in Terminal</h2>
<p>There are several commands to manage the index:</p>
<ul>
<li><b>lsindex</b> - Displays the indexed attributes on the current volume/partition.<br/>
These are the attributes that are indexed by default:</li>
</ul>
<preclass="terminal"> ~ ->lsindex
BEOS:APP_SIG
MAIL:account
MAIL:cc
MAIL:chain
MAIL:draft
MAIL:flags
MAIL:from
MAIL:name
MAIL:pending_chain
MAIL:priority
MAIL:reply
MAIL:status
MAIL:subject
MAIL:thread
MAIL:to
MAIL:when
META:address
META:city
META:company
META:country
META:email
META:fax
META:group
META:hphone
META:name
META:nickname
META:state
META:url
META:wphone
META:zip
_signature
_status
_trk/qrylastchange
_trk/recentQuery
be:deskbar_item_status
last_modified
name
size
</pre>
<ul>
<li><b>mkindex</b> - Adds an attribute to the index of a volume/partition. </li>
</ul>
<pre>Usage: mkindex [options] <attribute>
Creates a new index for the specified attribute.
-d, --volume=PATH a path on the volume to which the index will be added,
defaults to current volume.
-t, --type=TYPE the type of the attribute being indexed. One of "int",
"llong", "string", "float", or "double".
Defaults to "string".
--copy-from path to volume to copy the indexes from.
-v, --verbose print information about the index being created
</pre>
<p>Only <b>new</b> files with that attribute come automatically into the index!<br/>
Existing files have to be added manually by copying them and deleting the originals after that. Alternatively you can use the command <spanclass="cli">reindex</span>.
</p>
<ul>
<li><b>reindex</b> - Puts the attributes of existing files into the newly created index of a volume/partition. </li>
</ul>
<pre>Usage: reindex [-rvf] attr <list of filenames and/or directories>
-r enter directories recursively
-v verbose output
-f create/update all indices from the source volume,
"attr" is the path to the source volume
</pre>
<ul>
<li><b>rmindex</b> - Removes an attribute from the index of a volume/partition.</li>
</ul>
<pre>Usage: rmindex [OPTION]... INDEX_NAME
Removes the index named INDEX_NAME from a disk volume. Once this has been
done, it will no longer be possible to use the query system to search for
files with the INDEX_NAME attribute.
-d, --volume=PATH a path on the volume from which the index will be
removed
-h, --help display this help and exit
-p, --pattern INDEX_NAME is a pattern
-v, --verbose print information about the index being removed
INDEX_NAME is the name of a file attribute.
If no volume is specified, the volume of the current directory is assumed.</pre>