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 command reindex.
- reindex - Puts the attributes of existing files into the newly created index of a volume/partition.
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
- 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.