Index

Attributes and Queries 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.
The index is part of the filesystem and is kept for every volume/partition separately.

Indexing commands in Terminal

There are several commands to manage the index:

 ~ ->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 
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 

Only new files with that attribute come automatically into the index!
Existing files have to be added manually by copying them and deleting the originals after that. Alternatively you can use the command reindex.

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

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.