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 - Displays the indexed attributes on the current volume/partition.

  These are the attributes that are indexed by default:

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

- mkindex - Adds an attribute to the index of a volume/partition.

      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 tool reindex.

- rmindex - Removes an attribute from the index of a volume/partition.

      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.